Zip-файл загружается более 1 ГБ, не работает с nodejs? - PullRequest
1 голос
/ 29 апреля 2019

Я хочу предоставить возможность загружать zip-файл размером более 1 ГБ в мое веб-приложение. Я использую nodejs версии 8.11.3 с использованием модуля узла Multer на стороне сервера. При локальном тестировании этой функции она работает нормально, однако, когда я размещаю свое приложение на любом облачном сервере (независимо от поставщика облачных услуг), он не работает, что приводит к не отвечающему браузеру. Похоже, что существует проблема при загрузке файла через сеть. Пробовал через запрос фидлера / почтальона, но безуспешно.

Уже следуют решения, упомянутые в ссылках:

Попытка отправки файловых данных по частям привела к тому, что многие запросы http завершились сбоем браузера. https://hpbn.co/xmlhttprequest/

Попытка использовать веб-сокеты для отправки данных (тот же результат) https://github.com/rico345100/socket.io-file-client

Пробный подход по FTP http://ftp.apixml.net/

// код на стороне сервера

let limits = {
        files: 1,
        fileSize: 5000 * 1024 * 1024
    }

uploads = multer({
            dest: "/uploads/",
            limits: limits,
            fileFilter: function(req, file, cb) {
                ...
            }
        });

// Код на стороне клиента

var fd = new FormData();
fd.append("fileToUpload", blobFile);
  var xhr = new window.XMLHttpRequest();
    $.ajax({
                        url: `/upload`,
                        type: "POST",
                        data: fd,
                        processData: false,
                        contentType: false,
                        xhr: function() {
                        },
                        success: function(response) {
                        },
                        error: function(errorMsgResp) {
                        }
                    });

Ожидаемый результат: файл должен быть загружен, даже если его размер превышает 1 ГБ без каких-либо проблем с производительностью.

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