【发布时间】:2019-06-14 09:08:37
【问题描述】:
我正在尝试允许用户将多张图片上传到我的网站,然后这些图片将作为附件通过电子邮件发送给所有用户,但我遇到了一个错误,指出文件太大。
我使用 Mailgun 发送邮件,使用 Cloudinary 上传/存储图像,使用 MongoDB 作为我的数据库,使用 request.js 请求图像,使用 Cloud 9 进行开发,使用 Node.js/Express 作为我的后端。
用户进程是这样的:
- 用户向网站提交图片
- 图片通过 Cloudinary 上传,每张图片的直接链接保存在 MongoDB 数据库中
- 邮件通过 Mailgun 发出,以通知用户新帖子以及添加为附件的图像
我正在使用 request.js 从 Cloudinary 请求图像,然后将每个图像推送到一个数组中,然后将其添加为 Mailgun 的附件参数。
这适用于较小的图像,但当用户上传大量高质量图像时,我会收到错误消息。
我尝试将 100MB 的文件大小限制添加到 Multer、bodyParser.json 和 bodyParser.urlencoded 以及 100MB 的参数限制。
var upload = multer({ storage: storage, fileFilter: imageFilter, limits: {fileSize: 100000000}});
app.use(bodyParser.json({limit: "100mb", parameterLimit: 100000000}));
app.use(bodyParser.urlencoded({limit: '100mb', extended: true, parameterLimit: 100000000}));
var images = [];
post.images.forEach(function(photo){
images.push(request(photo));
});
var data = {
from: "email <email@email.com>",
to: "email@email.com",
subject: 'this is an email',
html: 'this is an email',
attachment: images
};
预期的结果是发送成功的电子邮件,并附有所有图像。
实际结果是这个错误信息:
{ Error: <html>
<head><title>413 Request Entity Too Large</title></head>
<body bgcolor="white">
<center><h1>413 Request Entity Too Large</h1></center>
<hr><center>nginx</center>
</body>
</html>
at IncomingMessage.res.on (/home/ubuntu/workspace/TW/node_modules/mailgun-js/lib/request.js:319:17)
at emitNone (events.js:111:20)
at IncomingMessage.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1064:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9) statusCode: 413 }
【问题讨论】:
-
似乎错误来自 nginx,所以请求可能永远不会到达您的节点服务器?
-
@schu34 我可以给 nginx 添加限制吗?我以前从未听说过。
-
如果问题是ngInx,那么配置文件应该是
/etc/nginx/nginx.conf。此链接也可以提供帮助:stackoverflow.com/questions/24306335 -
@paulsm4 感谢您的帮助!我已经编辑了 nginx.conf 并重新启动了我的工作区,但仍然弹出错误。也许我编辑不正确?这是我的 http 部分的样子i.imgur.com/7eu0gy3.png
标签: node.js express multer mailgun cloudinary