我正在编写一个网络应用程序,允许用户上传非常大的文件(最多 GB)。我的技术栈包括:nodejs、express、multer和纯html。它适用于小文件。但是当我上传大文件(127 MB)时,等待一段时间(大约2分钟)后出现错误ERR_CONNECTION_RESET。
我尝试使用 req.setTimeout 和 res.setTimeout 在服务器上延长响应时间,但没有帮助。这可能是因为前端等待很长时间才能得到响应。
以下是我得到的错误:
谢谢大家。
增加相应上传路由的
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
})
经过几个小时的尝试调试,我终于得到了一个可行的解决方案:
关键是提高
server.requestTimeout
和 server.headersTimeout
的值
server.requestTimeout 或 60000 之间的最小值。