51

こんにちは、angularjs を使用してアップロードする前に画像をプレビューする方法があるかどうか疑問に思っていましたか? このライブラリを使用しています。https://github.com/danialfarid/angular-file-upload

ありがとう。これが私のコードです:

template.html

 <div ng-controller="picUploadCtr">
<form>
        <input type="text" ng-model="myModelObj">
      <input type="file" ng-file-select="onFileSelect($files)" >
 <input type="file" ng-file-select="onFileSelect($files)" multiple>

 </form>
     </div>

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);
  }); 
}
}
4

4 に答える 4

53

OdeToCodeは、このような素晴らしいサービスを投稿しました。したがって、この単純なディレクティブを使用すると、簡単にプレビューしたり、進行状況バーを確認したりできます。

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

最新のすべてのブラウザーで動作します。

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

于 2013-10-01T06:35:52.010 に答える
36

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

<img ng-src="{{image_source}}">
<input type="file" id="trigger" class="ng-hide" onchange="angular.element(this).scope().setFile(this)" accept="image/*">

これは私にとってはうまくいきました。

于 2015-08-11T22:12:59.740 に答える