我正在使用blueimp 文件上传插件实现一些文件上传功能,我注意到我的最后一个文件进度条达到 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 = $("<div></div>").html("Uploading...<div class='progressHolder'><div class='progress'> </div></div>").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
by 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 + "%");
},
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)