上传切片文件时如何防止进度条跳过?

时间:2014-06-02 14:15:04

标签: javascript upload progress-bar blob

我正在使用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中获取正确数量的上传字节?

1 个答案:

答案 0 :(得分:0)

我使用了以下内容,以便在上传小文件时不会跳过太多:

if(total_parts>20){
   //the code from above
}
else{                                                                            
   percentComplete = parallel_uploads / total_parts;
}