不使用FormData的AngularJs文件上传

3

我已经制作了一个简单的拖放指令用于文件上传,但我的主要问题是需要IE8/9支持。考虑到FormData不被支持,我如何在不使用FormData对象的情况下进行多文件上传?

提前致谢。

编辑: 我想做的是这个:

$scope.uploadFile = function () {
      var upload = $http.post('awesomeFileThatWantsMultipleFilesUploaded.php',
                 angular.element(document.getElementsByClassName('droppable')).scope().files,
                 {withCredentials: true,
                  headers: {'Content-Type': undefined },
                  transformRequest: angular.identity})
           .success(function (response) {
               });

      return upload;
   }

但问题是当浏览器不支持FormData时,我会将files变量初始化为array,然后将每个文件推送到该变量中。如果文件是FormData,那么这样做是可行的。


这个模块 https://github.com/nervgh/angular-file-upload 很好。它支持使用FormData进行本地HTML5上传,但对于旧版浏览器则退化为传统的iframe上传方法。 - Nils
1个回答

0

不要手动制作。这样会很混乱,而且你总会遇到问题。你可以使用一个formdata的polyfill,比如moxie,对于angular,我使用angular-file-upload,甚至有一种方法可以从浏览器上传到S3(here

如果你想手动完成它,请检查这些存储库中的代码并找到一些想法。


Plupload不支持IE9,而moxie是基于它的。angular-file-upload,正如您可以在这里第89行看到的那样,也使用formData,但由于IE9的支持问题,我想避免使用它。 - Michel Tomé
https://github.com/danialfarid/angular-file-upload#-old-browsers 是的,你需要HTML5 polyfill,在使用那些浏览器时请检查问题以避免出现问题。 - Nickydonna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接