我正在尝试管理上传的进度(顺便说一句,这只是一张图片)。我使用了 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.loaded
,当不是这种情况时,e.total
应该是相同的。lengthComputable = false
上面console log
在 Chrome 和 Firefox 中只显示了 1 行,这里是进度事件元素的一些内容:
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)。
如果您有任何想法,请在这里分享,提前谢谢!