【发布时间】:2021-01-19 14:41:01
【问题描述】:
我有一个使用 multer 处理文件上传的 node/express 应用程序。在我的本地机器上一切正常,但在服务器上,如果上传的文件超过几 Mbs,浏览器会因“连接重置”错误而停止。
这里是上传脚本的简单测试版:
var express = require('express');
var multer = require('multer');
// Create server
var app = express();
// Start server
function startServer() {
var port = 8888;
server = app.listen(port, function () {
console.log('Node version:' + process.versions.node);
console.log('Express server listening on port %d in %s mode', port, app.settings.env);
});
}
var upload = multer({dest: './tmp/'});
var app = express()
app.post('/', upload.single('data'), function (req, res, next) {
console.log(req.file);
});
startServer();
这是测试上传的 html 页面:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>Test Upload</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<p>Hello world! This is a test upload.</p>
<form method="post" action="http://192.168.1.234:8888" enctype="multipart/form-data">
<label>file</label><br>
<input type="file" name="data"><br>
<input type="submit" name="submit" value="Upload">
</form>
</body>
</html>
我在两台不同的服务器上进行了测试——一台 VPS 和一台裸机——我最终在两台服务器上都遇到了同样的错误。上传开始,我可以在我的./tmp 目录中看到一个文件块,但它永远不会完成并且不会抛出任何错误,无论是在节点中还是在系统日志中。
【问题讨论】:
-
根据我的经验,这可能是 apache / nginx / 其他服务器正在运行的超时配置,我会尝试调查。
-
可能没有足够的磁盘空间?
-
@NadavL 到目前为止节点是前端服务器,没有任何代理...
-
@MedetTleukabiluly 在一台服务器上还有几台 Gig,而另一台则有几百台,所以我认为这不是问题的根源。
标签: javascript node.js file-upload multer