上次文件进度达到100%与停止/完成事件之间的差距很大?

我正在使用blueimp文件上传插件来实现一些文件上传function,我注意到我的上一个文件进度条达到100%和停止和完成事件之间可能会有很大的时间间隔。我有以下内容码:

$('#fileupload').fileupload({ dataType: 'json', progress: function (e, data) { var progress = parseInt(data.loaded / data.total * 100, 10); var bar = data.context.children().children(".progress"); $(bar).css("width", progress + "%"); }, add: function (e, data) { data.context = $("
").html("Uploading...
 
").appendTo($("#files")); data.submit(); $("#processing").fadeIn(); }, stop: function (e, data) { $("#uploadFiles").fadeIn(); $("#processing").fadeOut(); }, done: function (e, data) { $.each(data.result.files, function (index, file) { idArray.push(file.Id); }); } });

有谁知道为什么会发生这种情况? 我怎样才能使进度条在调用完成/停止时考虑进度?

当您上传文件时,文件首先(显然)上传到服务器,然后服务器将执行请求的服务器端脚本,然后处理该文件。 如果请求的“处理文件”部分不是即时的,则在进度达到100%和完成回调被触发之间会有延迟。 如果存在网络延迟,也可能会有延迟。

progress事件仅跟踪上载的进度,而不是请求的进度。

一种解决方案是让你的进度条停止,比如90%然后在完成的回调中将其提高到100% 。 只需将data.total乘以1.1

  progress: function (e, data) { var progress = parseInt(data.loaded / (data.total*1.1) * 100, 10); var bar = data.context.children().children(".progress"); $(bar).css("width", progress + "%"); },