首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在冗长的服务器端文件处理之前,如何知道ajax文件上传何时完全完成

在冗长的服务器端文件处理之前,如何知道ajax文件上传何时完全完成
EN

Stack Overflow用户
提问于 2015-07-26 23:18:44
回答 1查看 127关注 0票数 2

我正在上传一个文件使用JQuery,ajax和FormData,在服务器端与PHP。文件上传工作正常,并且我有一个在上传过程中成功更新的进度条。但是,当文件较小或网络连接较快时,收到的最后进度事件可能不是100% (可能小于90%)。这是一个问题,因为我想在文件传输后更改进度条文本,以指示正在进行服务器端处理(将PDF转换为图像,这可能需要一些时间)。

有没有什么方法可以让我知道文件传输何时完成,这样我就可以确保在整个服务器端处理过程中,进度条不会一直停留在anonymous/impatience-inducing/oh-no-it-stopped-working-better-refresh-and-try-again 89%?

我的上传代码,以防万一(为了简洁,我删除了beforeSendsuccesscomplete ):

代码语言:javascript
运行
复制
var formData = new FormData($('#form-file-upload')[0]);
$.ajax({
  url: 'ajax/file-upload.php',
  type: 'POST',
  dataType : "json",
  xhr: function() {
    var myXhr = $.ajaxSettings.xhr();
    if(myXhr.upload){
      myXhr.upload.addEventListener('progress', function(e){
        if(e.lengthComputable){
          var percent = (100*e.loaded/e.total).toFixed(0);
          $('#form-file-upload-progress-percent').html(percent + ' %');
          $('#form-file-upload-progress-bar').attr('aria-valuenow', percent).css({width: percent + '%'});
        }
      }, false);
    }
    return myXhr;
  },
  beforeSend: // code executed before submission
  success: // code executed after successful server-side processing
  complete: // code executed after server-side processing
  data: formData,
  cache: false,
  contentType: false,
  processData: false
});
EN

回答 1

Stack Overflow用户

发布于 2019-06-13 06:09:42

upload具有与主xhr相同的事件。所以myXhr.upload.addEventListener("load", uploadComplete);就是你要找的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31638629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档