Laravel ajax загрузка файла (файл Excel: 1M + строки) - PullRequest
1 голос
/ 16 февраля 2020

Я пытаюсь создать правильный индикатор выполнения для загрузки файла в Excel в Laravel Я использую ajax, чтобы загрузить файл и получил индикатор выполнения для части загрузки, чтобы "завершить работу". Моя единственная проблема заключается в том, что когда файл загружен (на 100% завершено в части загрузки), он по-прежнему говорит «загрузка ...». Похоже, uploadProgress не прыгает вперед до success, когда все готово.

Файл обрабатывается в обратном направлении с помощью laravel -excel, и обработка большого Excel занимает очень очень много времени. файлы с 1M + строк.

Вот также скриншот этого. Я консоль зарегистрировал прогресс, и все прошло нормально, пока не перешло go к функции success в вызове ajax. enter image description here

Что я могу сделать, чтобы это исправить? Я не могу ограничить количество строк при загрузке файлов 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!');
        }
    });

1 Ответ

2 голосов
/ 16 февраля 2020

Я бы использовал mysql LOAD DATA INTO, чтобы обработать файл excell (csv) в базе данных. У меня была похожая задача с несколькими 5-600 МБ CSV-файлами, которые выдавали php ошибки времени выполнения.

С помощью LOAD DATA INTO я импортировал эти файлы за секунды, без проблем.

Подробнее:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...