【问题标题】:XMLHttpRequest.upload progress event only works in IEXMLHttpRequest.upload 进度事件仅适用于 IE
【发布时间】:2014-10-26 17:53:58
【问题描述】:

我正在尝试管理上传的进度(顺便说一句,这只是一张图片)。 我使用了 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.total 应该是相同的,而 lengthComputable = 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.6+Go),我在 Chrome 上看到了 %。我认为它是 100% 即时的,因为它会一次上传整个图像或其他东西。而且一切都是本地的,所以它超级快。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多