javascript - 上一个文件进度达到 100% 与停止/完成事件之间存在巨大差距?

标签 javascript jquery file-upload blueimp

我正在使用 blueimp File Upload plugin实现一些文件上传功能,我注意到在我的最后一个文件进度条达到 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'>&nbsp;</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% 处,然后在 done 回调中将其跳到 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 + "%");
        },

关于javascript - 上一个文件进度达到 100% 与停止/完成事件之间存在巨大差距?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14691236/

相关文章:

javascript - 将具有重复值的字符串数组转换为基于索引的对象数组

javascript - jqGrid,如何通过模态形式在网格内的任意位置添加一行?

javascript - JQuery 数据表标题下方的附加滚动条

jQuery 显示/隐藏回调动画(不想要它)

javascript - 查找对象数组的平均值

javascript - 如何在jwplayer中一一调用带参数的href函数

javascript - NodeJs/Bluebird - 不断收到未处理的拒绝错误

javascript - 在使用 Javascript 上传之前检查图像的宽度和高度

php - 上传图片表格和另一个填写表格

javascript - blueimp jquery-file-upload 如何在上传前取消 1 个文件