javascript - Laravel ajax 文件上传(excel 文件:1M+ 行)
问题描述
我正在尝试在 Laravel 中为我的 excel 文件上传创建一个适当的进度条我正在使用 ajax 上传文件,并且已经获得了上传部分的进度条以“关闭”工作。我唯一的问题是,当文件上传(上传部分 100% 完成)时,它仍然显示“上传...”。完成后看起来uploadProgress
并没有向前跳success
。
该文件由laravel-excel在后面处理,处理1M+行的大excel文件需要很长时间。
这里也是它的截图。我在控制台记录了进度,一切都很好,直到它应该转到success
ajax 调用中的函数。
我能做些什么来解决这个问题?我无法限制 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!');
}
});
解决方案
我会使用 mysqlLOAD DATA INTO
将 Excel(csv)文件处理到数据库中。我有一个类似的任务,有几个 5-600 MB 的 csv 文件,这会产生 php 运行时错误。
使用LOAD DATA INTO
,我已经在几秒钟内导入了这些文件,没有问题。
阅读更多:
推荐阅读
- python - 检查哪些 ids 存在 postgrestable
- c# - 页面未加载 PartialView HTML
- javascript - ComponentDidMount 只获取第二个数据集
- html - Angular - 复选框唯一选择
- amazon-web-services - 我正在尝试通过 Cloud Formation 的预算设置预算操作
- regex - Notepad++ 在两个竖线之间查找 50 个字符或更长的字符串
- python-3.x - 如何从抓取谷歌地图的地址中获取纬度和经度?
- javascript - JavaScript 中的 Vector Swizzling:最佳方法
- apache-spark - Spark 中是否有聚类算法,其中生成的聚类大小大致相同?
- angular - 如何在 Angular 中触发事件的动作