繁体   English   中英

如何修复Node.js中的``413请求实体太大''错误

[英]How to fix '413 Request Entity Too Large' error in Node.js

我试图允许用户将多个图像上传到我的网站,然后将这些图像作为附件通过电子邮件发送给所有用户,但是我遇到一个错误,指出文件大小太大。

我正在使用Mailgun发送邮件,使用Cloudinary上传/存储图像,使用MongoDB作为我的数据库,使用request.js请求图像,使用Cloud 9进行开发,并使用Node.js / Express作为后端。

用户进程如下所示:

  • 用户将图片提交到网站上
  • 图片通过Cloudinary上传,每个图片的直接链接保存在MongoDB数据库中
  • Mail通过Mailgun发出通知,通知用户新帖子以及添加为附件的图像

我正在使用request.js从Cloudinary请求图像,然后将每个图像推入一个数组,然后将其添加为Mailgun的附件参数。

这对于较小的图像效果很好,但是当用户上传大量的高质量图像时,我会收到错误消息。

我尝试将100MB fileSize限制添加到Multer,bodyParser.json和bodyParser.urlencoded以及100MB的parameterLimit中。

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服务器,其默认大小限制很小。 有关如何设置大小限制的信息,请参见以下问题: Nginx中的硬编码标头大小限制/超时值

问题最终根本不是nginx,我试图通过Mailgun通过电子邮件将图像作为附件发送,并且硬限制为25MB。

在用户可以上传图像的部分中编辑此行之后,一切运行正常:

let result = await cloudinary.v2.uploader.upload(file.path, {width: 1280, height: 720, crop: "limit"});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM