首页 > 解决方案 > Laravel ajax 文件上传(excel 文件:1M+ 行)

问题描述

我正在尝试在 Laravel 中为我的 excel 文件上传创建一个适当的进度条我正在使用 ajax 上传文件,并且已经获得了上传部分的进度条以“关闭”工作。我唯一的问题是,当文件上传(上传部分 100% 完成)时,它仍然显示“上传...”。完成后看起来uploadProgress并没有向前跳success

该文件由laravel-excel在后面处理,处理1M+行的大excel文件需要很长时间。

这里也是它的截图。我在控制台记录了进度,一切都很好,直到它应该转到successajax 调用中的函数。 在此处输入图像描述

我能做些什么来解决这个问题?我无法限制 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!');
        }
    });

标签: javascriptphpexcelajaxlaravel

解决方案


我会使用 mysqlLOAD DATA INTO将 Excel(csv)文件处理到数据库中。我有一个类似的任务,有几个 5-600 MB 的 csv 文件,这会产生 php 运行时错误。

使用LOAD DATA INTO,我已经在几秒钟内导入了这些文件,没有问题。

阅读更多:

https://dev.mysql.com/doc/refman/8.0/en/load-data.html


推荐阅读