AngularJS,Internet Explorer文件上传60秒后挂起

时间:2014-12-29 11:46:51

标签: angularjs internet-explorer file-upload

我有一个不寻常的问题,只有IE才会出现。

我有一个文件上传UI,其中on-change事件连接到一个Angular Directive,它调用web api服务,因此

 element.on('change', event => {
    scope.onChange();

    if (event.target.files.length > 0) {

        var fd = new FormData();
        fd.append('file', event.target.files[0]);

        $http.post('/api/upload', fd, {
                transformRequest: angular.identity,
                headers: { 'Content-Type': undefined },
            })
            .success(data => {
                scope.onSuccess({ data: data });
            })
            .error(data => {
                scope.onError({ data: data });
            });
    }
});

这适用于Firefox和Chrome。它也适用于IE,除非我回到页面然后等待60秒(如果我等待不到60秒,则工作正常)。

如果我等待60秒仍然会触发onchange事件并尝试发布,但是,当请求为空时,永远不会到达API服务。这意味着xmlhttprequest只会挂起:

Pending request Empty Request

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

虽然以上修复了您将其设置为一段时间的问题,但它确实意味着对注册表进行了更改。这也是一个软糖,而不是解决问题的实际方法。

我们的问题是该帖子未经过正确认证,从未回来。

在POST之前执行GET会强制进行身份验证并解决问题

更新:此链接提供类似于我们http://blogs.msdn.com/b/ieinternals/archive/2010/11/22/internet-explorer-post-bodies-are-zero-bytes-in-length-when-authentication-challenges-are-expected.aspx

的问题的信息