Imagen de vista previa antes de cargar Angularjs

Hola, me preguntaba si había una forma de previsualizar las imágenes antes de subirlas usando angularjs. Estoy usando esta biblioteca. https://github.com/danialfarid/angular-file-upload

Gracias. Aquí está mi código:

template.html

controller.js

  .controller('picUploadCtr', function($scope, $http,$location, userSettingsService) { $scope.onFileSelect = function($files) { //$files: an array of files selected, each file has name, size, and type. for (var i = 0; i < $files.length; i++) { var $file = $files[i]; $http.uploadFile({ url: 'server/upload/url', //upload.php script, node.js route, or servlet uplaod url) data: {myObj: $scope.myModelObj}, file: $file }).then(function(data, status, headers, config) { // file is uploaded successfully console.log(data); }); } } 

OdeToCode publicó un excelente servicio para estas cosas. Por lo tanto, con esta simple directiva puede obtener una vista previa e incluso ver la barra de progreso:

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

¡Está funcionando en todos los navegadores modernos!

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

JavaScript

  $scope.setFile = function(element) { $scope.currentFile = element.files[0]; var reader = new FileReader(); reader.onload = function(event) { $scope.image_source = event.target.result $scope.$apply() } // when the file is read it triggers the onload event above. reader.readAsDataURL(element.files[0]); } 

Html

   

Esto funcionó para mí.

Vea el widget de carga de imágenes de la extensión Jasney de Bootstrap v3

  // start Picture Preview $scope.imageUpload = function (event) { var files = event.target.files; for (var i = 0; i < files.length; i++) { var file = files[i]; var reader = new FileReader(); reader.onload = $scope.imageIsLoaded; reader.readAsDataURL(file); } } $scope.imageIsLoaded = function (e) { $scope.$apply(function () { $scope.img = e.target.result; }); }