XMLHttpRequest.upload进度事件仅适用于IE

时间:2014-09-02 12:49:48

标签: javascript file-upload progress-bar progress xmlhttprequest-level2

我正在尝试设置上传的进度(这只是btw的图像)。 我使用了XMLHttpRequest,并且几乎和互联网上的其他人一样,如下所示:

var upProgress = function(e) {
    console.log(e.loaded, e);
};

var fd = new FormData();
fd.append('image', file);

var xhr = new XMLHttpRequest();
xhr.upload.addEventListener('progress', upProgress, false);

xhr.open('POST', _Utilities.urlApi + url);
xhr.send(fd);

图像上传,该部分有效。 但是,进度事件(在Firefox 31和Chrome 36中)仅在e.loaded = e.total = file' size时触发一次(在开头)。它适用于IE 11,该事件被触发十几次同一张图片(约2.7Mo)。

我迷失在这里,我在网上搜索但没找到任何我还没有做过的事情。 例如,e.loadede.totallengthComputable = false时应该相同,而不是这里的情况。

以上console log在Chrome和Firefox中仅显示1行,以下是progress事件元素的部分内容:

lengthComputable: true
loaded: 2797378
total: 2797378
totalSize: 2797378
type: "progress"

在IE上然而我得到了这个(我记录了加载的值和事件的元素):

149 [object ProgressEvent]
131072 [object ProgressEvent]
262144 [object ProgressEvent]
...
2752512 [object ProgressEvent]
2797384 [object ProgressEvent]

这意味着它按预期工作。

我不知道是什么原因引起的。 以上所有都在我的机器上进行了测试。我遇到了一些只在某些机器或设置上遇到问题的人,一位朋友尝试使用它的机器而且它也是这样(Windows 8.1和Chrome),另一位朋友尝试了相同的结果(MACOS和Chrome)。

如果您有任何想法,请提前分享!

1 个答案:

答案 0 :(得分:1)

请从这里检查我的答案XMLHttpRequest upload progress not firing correctly,我也有这个,经过痛苦的时间后,这只是我的antivirus program ...也许它与你的相关吗?