我正在使用XMLHttpRequest();在循环中上传切片文件。
function upload(blobOrFile, part, name, size) {
var formdata = new FormData();
var xhr = new XMLHttpRequest();
...
var parallel_uploads=0;
}
在该功能中,我使用以下代码显示进度条:
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
parallel_uploads = parallel_uploads + 1;
}
}
xhr.upload.addEventListener("progress", function (evt) {
if (evt.lengthComputable) {
var total_parts = Math.ceil(size / 209715);
var cur_part = (evt.loaded / evt.total) / total_parts;
var percentComplete = cur_part + parallel_uploads / total_parts;
$('#bars progress').val(percentComplete);
}
}, false);
有关xhr状态here的更多信息。
进度条正在跳过,尤其是在上传小文件时。在Chrome中,它比Firefox更加明显地向前和向后跳过。我认为问题在于并行上传的检测出错了。我尝试了所有xhr状态,没有任何效果。
那么如何从所有blob中获取正确数量的上传字节?
答案 0 :(得分:0)
我使用了以下内容,以便在上传小文件时不会跳过太多:
if(total_parts>20){
//the code from above
}
else{
percentComplete = parallel_uploads / total_parts;
}