【发布时间】:2020-02-16 10:45:51
【问题描述】:
我正在尝试在 Laravel 中为我的 excel 文件上传创建适当的进度条
我正在使用 ajax 上传文件,并获得了上传部分的进度条以“关闭”工作。我唯一的问题是,当文件上传(上传部分 100% 完成)时,它仍然显示“上传...”。完成后,uploadProgress 似乎不会跳转到 success。
文件由laravel-excel在后面处理,处理1M+行的大excel文件需要很长时间。
这也是它的截图。我在控制台记录了进度,一切都很好,直到它应该转到 ajax 调用中的 success 函数。
我能做些什么来解决这个问题?我无法限制 excel 文件上传中的行数,因为我正在创建的网站需要上传具有这么多或更多行的文件。
另外,我的 ajax 上传代码:
// AJAX form upload
var form = $('.form-import');
var bar = $('.import-progress-bar');
var status = $('.import-status');
form.ajaxForm({
beforeSend: function() {
status.empty();
bar.attr('value', 0);
},
uploadProgress: function(event, position, total, percentComplete) {
bar.attr('value', percentComplete);
status.html('Uploading...');
console.log('Upload progress - '+ percentComplete + '%');
},
success: function() {
status.html('Importing rows...');
},
complete: function() {
status.html('Importing complete!');
}
});
【问题讨论】:
-
您有任何错误吗?你能创建一个小提琴吗?您使用的 jQuery 版本是什么?你确定状态查询正确吗?
-
没有错误。我可以看到请求没有完成,因为我可以在数据库中看到正在添加行。但是文件上传了,只有进程在运行。我正在使用 jquery 3.4.1 和 jquery-form。是的,当我开始上传时,状态元素正在更新。
-
服务器错误日志是否开启?
-
是的,日志记录已开启。没有错误。上传进度达到 100% 后,ajax 将不会进入下一个功能(成功)。但我正在使用下面@Zoli 发布的解决方案来修复它。
标签: javascript php excel ajax laravel