2014-09-22 71 views
1

我做了一个简单的文件上传拖放指令,但我主要关心的是,我需要IE8/9的支持,所以考虑到FormData不支持,我怎么能做一个多文件上传而不使用FormData对象?没有FormData的AngularJs文件上传

在此先感谢。

编辑: 我想要做做的是:

$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,这可以工作。

+0

这个模块https://github.com/nervgh/angular-file-upload是很好的。它支持使用FormData进行原生HTML5上传,但是对于旧版浏览器而言,其降级为传统iframe上传方法。 – Nils 2014-09-24 12:06:06

回答

0

不要手工制作。相当混乱,你会一直有问题。您可以使用填充工具对FORMDATA,像moxie,角形我用angular-file-upload,甚至有从浏览器上传到S3的方式(​​)

如果你想通过做手工,检查代码在这些仓库并找到一些想法

+0

Plupload不支持IE9,而moxie是基于它的。 angular-file-upload,正如你可以在第89行看到的[https://github.com/danialfarid/angular-file-upload/blob/master/dist/angular-file-upload.js] formData,我想避免,因为ie9的支持。 – 2014-09-24 11:55:31

+0

https://github.com/danialfarid/angular-file-upload#-old-browsers是的,你需要html5填充,检查问题,以避免这些浏览器的问题 – donnanicolas 2014-09-24 11:58:41