ОШИБКА_CONNECTION_RESET при многократной загрузке узлов большого файла

#node.js #file-upload #multer #connection-reset

#node.js #загрузка файла #многократный #подключение-сброс

Вопрос:

Я пишу веб-приложение, которое позволяет пользователю загружать очень большой файл (до ГБ). Мой технический стек включает в себя: nodejs, express, multer и чистый html. Это отлично работает для небольшого файла. Но когда я загружаю большой файл (127 МБ), я получил ошибку ERR_CONNECTION_RESET после некоторого ожидания (около 2 минут).

Я пробовал увеличить время отклика на сервере, используя как req.setTimeout, так и res.setTimeout, но это не помогло. Возможно, это связано с тем, что интерфейс слишком долго ожидает получения ответа.

Ниже приведена ошибка, которую я получил:

введите описание изображения здесь

Спасибо вам всем.

Ответ №1:

Увеличение res времени ожидания для соответствующего маршрута загрузки определенно должно сработать. Попробуйте сделать это следующим образом:

 function extendTimeout (req, res, next) {
  // adjust the value for the timeout, here it's set to 3 minutes
  res.setTimeout(180000, () => { // you can handle the timeout error here })
  next();
})

app.post('/your-upload-route', extendTimeout, upload.single('your-file'), (req, res, next) => {
  // handle file upload
})
  

Комментарии:

1. Я уже пробовал res.setTimeout и req.setTimeout, но это не сработало. Я думаю, что интерфейс хочет услышать какой-то ответ в короткие сроки, а не ждать, пока файл будет загружен.

2. Вы пробовали это так? Если да, то вам, вероятно, необходимо настроить время ожидания запроса в клиенте.

3. Я пытался использовать axios во внешнем интерфейсе, но это все равно не сработало.

4. Можете ли вы добавить свой код и показать, как вы устанавливаете время ожидания в узле и на стороне клиента?