我正在尝试允许用户将多个图像上传到我的网站,然后将这些图像作为附件通过电子邮件发送给所有用户,但是遇到一个错误,指出文件大小太大。
我正在使用Mailgun发送邮件,使用Cloudinary上传/存储图像,使用MongoDB作为我的数据库,使用request.js请求图像,使用Cloud 9进行开发,并使用Node.js / Express作为我的后端。 / p>
用户流程如下:
我正在使用request.js从Cloudinary请求图像,然后将每个图像推入一个数组,然后将其添加为Mailgun的附件参数。
这对于较小的图像效果很好,但是当用户上传大量的高质量图像时,我会收到错误消息。
我尝试为Multer,bodyParser.json和bodyParser.urlencoded以及100MB的parameterLimit添加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 }
答案 0 :(得分:0)
这里的问题似乎是您在节点一的前面运行了一个Nginx服务器,该服务器的默认大小限制很小。有关如何设置大小限制的信息,请参见以下问题:Hardcode header size limit / timeout values in Nginx
答案 1 :(得分:0)
问题最终根本不是nginx,我试图通过Mailgun通过电子邮件将图像作为附件发送,并且硬限制为25MB。
在用户可以上传图像的部分中编辑此行之后,一切运行正常:
api