我正在构建一个多文件上传jQuery
脚本,并使用XMLHttpRequest
和FormData
上传文件。效果很好。
但是,从测试和我读过的内容来看,您只能同时拥有6个并发XMLHttpRequest
个请求。从我的测试来看这是正确的,但是在完成这6个中的任何一个之后,队列中的下一个将上传,这是人们所期望的。
问题出现在进度功能上。此功能仅在使用 Safari 时调用前6个文件,但下一个排队的文件不会调用progress方法。 Firefox和Chrome可以正常运行并显示所有文件的进度。这是我正在使用的:
_makeRequest: function(asset) {
var _this = this;
var xhr = new XMLHttpRequest();
(function(progress) {
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
_this._progress(asset, e);
} else {
_this._log('Error: 'asset.file.name+' not computable');
}
};
}(asset.progress));
xhr.upload.addEventListener('load', function(e) {
_this._complete(e, _this);
});
xhr.upload.addEventListener('error', function(e) {
_this._failed(e, _this);
});
xhr.upload.addEventListener("abort", function(e) {
_this._canceled(e, _this);
});
xhr.upload.addEventListener("loadstart", function(e) {
_this._start(e, _this);
});
xhr.open("POST", this.assetBuilder.url);
xhr.send(this._formData(asset));
}
有没有办法让排队的文件也能在Safari中调用progress函数,以便我可以更新我的UI进度条?