How to read a file in AngularJS?

user1424508 picture user1424508 · Sep 17, 2013 · Viewed 90.7k times · Source

Is it possible to read files in AngularJS? I want to place the file into an HTML5 canvas to crop.

I was thinking of using a directive? This is the javascript code I want to put into my directive:

function readURL(input) {

    if (input.files && input.files[0]) {
        var reader = new FileReader();

        reader.onload = function (e) {
            $('#blah').attr('src', e.target.result);
        }

        reader.readAsDataURL(input.files[0]);
    }
}

Answer

Ivan Chernykh picture Ivan Chernykh · Oct 1, 2013

Yes, directives is a right way, but it looks little bit different:

.directive("ngFileSelect",function(){    
  return {
    link: function($scope,el){          
      el.bind("change", function(e){          
        $scope.file = (e.srcElement || e.target).files[0];
        $scope.getFile();
      });          
    }        
  }
})

Working example: http://plnkr.co/edit/y5n16v?p=preview

Thanks to lalalalalmbda for this link.