javascript - 使用 HTML5 通过 AJAX 上传一些文件时的整体进度条

标签 javascript jquery ajax html

我有一个进度条,它会随着文件的数量和大小而增加。

我想在使用 AJAX 和 HTML5 在服务器上上传文件时显示整体进度条。

我将每个文件上传到服务器并增加进度条。但我不知道怎么办。

因此,javascript 代码:

$("#add-files").on("change", function(){
   var files = $(this).prop("files");

   $.each(files, function(index, file) {
      var formData = new FormData();
      formData.append("FileName", file.name);
      formData.append("FileSize", file.size);

      uploadOnServer(formData);
   });
});

function uploadOnServer(formData) {
   var xmlHttpRequest = new XMLHttpRequest();
   if (xmlHttpRequest.upload) {
         xmlHttpRequest.upload.addEventListener("progress", function(evt) {
            if(evt.lengthComputable) {
                 var percent = 100 * (evt.loaded / evt.total);

                // update progress bar
            }
         });
    }

   $.ajax({
       url: "test/test",
       type: "POST",
       data: formData,
       processData: false,
       xhr: function() { return xmlHttpRequest; },
       success: function(result) { ... }
    });
}

最佳答案

如果你想显示每个文件上传的百分比没有错,那么看看这个

   <div id="#statustxt_n">0%</div>

function uploadFile(file) {
     var formData = new FormData();
     formData.append('file', $('#add-files')[0].files[0]);
    
      $.ajax({
            type: 'post',
            url: 'test/test',
            xhr: function() {  // Custom XMLHttpRequest
                var myXhr = $.ajaxSettings.xhr();
                if(myXhr.upload){ // Check if upload property exists
                     //update progressbar percent complete
                     statustxt1.html('0%');
             // For handling the progress of the upload
             myXhr.upload.addEventListener('progress',progressHandlingFunction, false);

                   }
                   return myXhr;
                },
            data: formData,
             success: function (status) {
                 alert("Success")
                 },
            processData: false,
            contentType: false
        });
    }


function progressHandlingFunction(e)
{
    if(e.lengthComputable){
        var percentage = Math.floor((e.loaded / e.total) * 100);
        //update progressbar percent complete
        statustxt1.html(percentage + '%');
        console.log("Value = "+e.loaded +" :: Max ="+e.total);
    }
}

关于javascript - 使用 HTML5 通过 AJAX 上传一些文件时的整体进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30452396/

相关文章:

javascript - 如何正确覆盖 jquery ui 自动完成?

javascript - Ajax 类似于 Django 中的按钮

java - 如何在将表单提交到 3rd 方 url 之前调用服务器端操作方法?

javascript - 如何从 asp.net 中的代码隐藏访问 JavaScript 变量

javascript - Chrome 扩展程序文本字段输入检查

php - 对齐动态生成的表单字段

javascript - 小数位数超出范围 - Javascript

获取背景颜色的 Javascript 代码不起作用

javascript - 如何改变 <div> 中元素的顺序?

javascript - 是否可以在单击链接时将 "#"附加到 URL?