ng-file-upload不适用于IE9

时间:2016-05-26 11:21:57

标签: c# angularjs ng-file-upload

我正在尝试使用以下角度指令来支持IE9中的文件上传,但是我遇到了从前端向API发出请求的问题。以下适用于9之后的所有IE版本。

这是我正在提出的角度服务请求:

import datetime
import time
from dateutil.rrule import rrule, MONTHLY
months = [dt.strftime("%m") for dt in rrule(MONTHLY, dtstart=date1, until=date2)]
print months

我试图点击的.net restful API:

    uploadFiles: function (data) {

        angular.forEach(data.files, function (file) {

                file.upload = Upload.upload({
                    url: fullUploadUrl,
                    data: { file: file }
                });

                file.upload.then(function (response) {
                    if (response.data.length > 0) {
                        console.log("Success")
                    } else {
                        console.log("Successish")
                    }
                }, function (response) {
                    console.log("fail")
                });
        });
    },

我还将以下策略文件(crossdomain.xml)添加到API的路由目录和前端:

    [ResponseType(typeof(List<FileUploadBindingModel>))]
    public async Task<IHttpActionResult> Post()
    {
        HttpPostedFile file = null;

        foreach (string fileKey in HttpContext.Current.Request.Files)
        {
             file = HttpContext.Current.Request.Files[fileKey];
             //Do things with files
        }
    }

有谁可以指出我在这里缺少的东西?该请求使其达到file.upload,但没有任何反应。

关于一些半相关信息的更多信息:

这就是将我使用的所有文件捆绑在一起的方式:

<?xml version="1.0" ?>
<cross-domain-policy>
    <site-control permitted-cross-domain-policies="all"/>
    <allow-access-from domain="*" secure="false"/>
    <allow-http-request-headers-from domain="*" headers="*" secure="false"/>
</cross-domain-policy>

前端和.net api之间的请求使用令牌身份验证,因此每个请求都必须包含此令牌。上述请求确实包含此内容。

包含所有相关文件的文件夹:

enter image description here

发送请求之前的文件:

enter image description here

1 个答案:

答案 0 :(得分:0)

IE 9及更低版本不支持异步文件上传。这意味着Angular无法使用其客户端优势在这些浏览器上上传文件。如果我没有弄错的话,我认为这是对XmlHttpRequest对象的限制。

您需要为旧版浏览器制定备份策略。

以下两个选项明确支持旧浏览器:

https://github.com/leon/angular-upload - 使用iframe作为后备广告

https://github.com/danialfarid/ng-file-upload - 使用FileAPI / Flash作为后备支持