IE中使用FormatData的文件上传问题(angularjs)

时间:2015-11-22 12:03:24

标签: angularjs internet-explorer form-data

我有一个帖子请求,上传文件以及其他一些基本信息。它在Chrome浏览器中运行良好但在IE中不一致。有时上传文件(文件+一些额外的信息),但大多数情况下它在IE中失败。我在Fiddler中跟踪了帖子请求,textview选项卡对于该请求是空的。请求未完成。错误代码是408.我还得到了来自fiddler的弹出消息:“内容长度不匹配:期望内容为3213,但客户端发送0”。因此,请求本身并不完整。

下面给出的是fomrdata和post request的形成代码

        var formData = new FormData();
        formData.append("file", file);
        formData.append("info1", info1);
        formData.append("info2", info2);
        formData.append("info3", info3);
        formData.append("info4", info4);
        var defer = $q.defer();
        return $http.post(url, formData,
        {
            headers: { 'Content-Type': undefined },
            transformRequest: angular.identity
        });

请建议我解决这个问题。另一种解决方案也可以。

1 个答案:

答案 0 :(得分:0)

我在angular和FormData方面遇到了类似的问题。在我的情况下,在Chrome中,一切正常 - 在我的Windows 10计算机上的IE 11.20.10586中,也没问题 - 但是使用IE 11.0.9600.18059(Windows 7)和IE 11.0.9600.17728(Windows Server),无法发送IE挂起。

阅读this issue,它似乎是一个IE错误。我无法修复它,但找到了一个有效的解决方法:两次发布表单,第一次没有任何文件。尝试类似的东西:

var formData = new FormData();
$http.post(url, formData,
    {
        headers: { 'Content-Type': undefined },
        transformRequest: angular.identity
    }).success(function(){
        formData.append("file", file);
        formData.append("info1", info1);
        formData.append("info2", info2);
        formData.append("info3", info3);
        formData.append("info4", info4);
        $http.post(url, formData,
        {
            headers: { 'Content-Type': undefined },
            transformRequest: angular.identity
        });
    });