javascript - 使用 AngularJs 上传文件/图片

标签 javascript jquery angularjs file-upload angularjs-directive

我想用 AngularJs 上传一个文件(这样的图像)...我读到 AngularJs 不支持标签输入类型 ="file" 所以我读到我需要自定义指令...我想获取输入文件并使用它在同一页 html 上显示预览(缩略图),并在 Controller 中将文件上传到服务器上...在我的页面 html 中,我写了这段代码:

<body ng-controller="myController">

<h1>Select file</h1>
<input type="file" file-model="myFile" />
<div>
     <h2>File content is:</h2>
     <pre>{{ content }}</pre>
</div>

</body>

我写了这个指令:

var modulo = angular.module('myApp', []);


modulo.directive('fileModel', function () {
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {
            element.on('change', function (event) {
                var file = event.target.files[0];
                scope.$emit("fileSelected", file);
            });            
        }
    };
});

这是我的 Controller :

modulo.controller('myController', function ($scope) {

    $scope.$on('fileSelected', function (event, args) {
        $scope.content(args.file);
        console.log(args.file);
    });
});

此代码不起作用...有解决方案吗?哪里出错了?

最佳答案

错误在你的指令中

检查这个,我在我的应用程序中使用了相同的指令

 .directive('fileModel', ['$parse', function ($parse) {
  return {
  restrict: 'A',
  link: function(scope, element, attrs) {
    var model = $parse(attrs.fileModel);
    var modelSetter = model.assign;

    element.bind('change', function(){
      scope.$apply(function(){
        modelSetter(scope, element[0].files[0]);
      });
    });
  }
};
}
this is my html to 
input(type="file", file-model="myFile", accept="image/*", image="image", id='fileInput')

这是我为处理上传而创建的一个小服务

function fileUpload (file, uploadUrl) { 

var cropedImage = dataURItoBlob(file);
var fileData = new FormData(),
    uploadedImage = '';
fileData.append('fileUpload', cropedImage);

return $http({
  withCredentials: true,
  method: "POST",
  url: uploadUrl,      
  data: fileData,
  headers: {'Content-Type': undefined},
  transformRequest: angular.identity
});    

}    

试试这个,它对我有用

关于javascript - 使用 AngularJs 上传文件/图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29793650/

相关文章:

javascript - 使用 jQuery v2.0.2 和 Play Framework 运行 Selenium 测试时出错

javascript - 通过 html 调用 js 函数导致错误

javascript - scope.$observe 不是 AngularJS 指令中的函数

javascript - 如何追加Child而不删除已有的内容?

javascript - Nodejs解码base64并使用流将它们保存到文件中

javascript - 为玩家检查敌人周围的圆形区域

angularjs - 如何在angularJs中使用jqlite选择具有特定类名的子元素?

javascript - 将对象键设置为变量值 - 为什么有两种不同的方法?

jquery - 根据特定域验证电子邮件字段

javascript - 单击按钮后关闭模式