ERR_CONNECTION_RESET при загрузке большого файла nodejs multer

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

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

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

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

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


person Akkien    schedule 20.08.2020    source источник


Ответы (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
})
person eol    schedule 20.08.2020
comment
Я уже пробовал req.setTimeout и req.setTimeout, но это не сработало. Я думаю, что интерфейс хочет услышать какой-то ответ в ближайшее время, а не ждать, пока файл будет загружен. - person Akkien; 20.08.2020
comment
Вы пробовали это так? Если да, вам, вероятно, нужно настроить время ожидания запроса в клиенте. - person eol; 20.08.2020
comment
Я пытался использовать axios во внешнем интерфейсе, но это все равно не сработало. - person Akkien; 20.08.2020
comment
Можете ли вы добавить свой код и показать, как вы устанавливаете тайм-аут в узле и на стороне клиента? - person eol; 20.08.2020