我正在使用XMLHttpRequest(与jQuery一起)获取多个文件上传的进度。通过向XMLHttpRequest对象添加“progress”事件侦听器,我可以获取event.loaded
和event.total
。这些变量给出了所有文件组合的已加载和总字节数。
我想做的是获取每个单独文件的进度,但我所看到的信息似乎在XMLHttpRequest中不可用。这是真的吗?
我认为这甚至不是必要的,但这是我的代码:
var xhr = $.ajaxSettings.xhr();
if (xhr.upload) {
xhr.upload.addEventListener('progress', function(event) {
var percent = 0;
var position = event.loaded || event.position;
var total = event.total;
if (event.lengthComputable) {
percent = Math.ceil(position / total * 100);
}
updateProgressBar(percent);
}, false);
}
return xhr;
如果我可以用XMLHttpRequest实现这个,那就太好了。如果有任何相关信息,我会很感激。
$.post()
或$.ajax()
。这是获得各个文件进度事件的唯一方法。进度事件与完整的XMLHttpRequest相关,它不知道也不关心正在上传多少个不同的“部分”或“文件”;对于XHR来说,它只是二进制的。因此,为了能够知道每个文件的上传进度,您必须每次仅包含一个文件进行请求。 - idbehold