Я пытаюсь разрешить пользователям загружать на свой веб-сайт несколько изображений, которые затем будут отправлены всем пользователям по электронной почте в виде вложений, но я сталкиваюсь с ошибкой, сообщающей, что размер файла слишком велик.
Я использую Mailgun для отправки почты, Cloudinary для загрузки / хранения изображений, MongoDB в качестве моей базы данных, request.js для запроса изображений, Cloud 9 для разработки и Node.js / Express в качестве моего бэкэнда.
Пользовательский процесс выглядит так:
- Пользователь отправляет фотографии на сайт
- Изображения загружаются через Cloudinary, а прямая ссылка на каждое изображение сохраняется в базе данных MongoDB
- Почта отправляется через Mailgun для информирования пользователей о новом сообщении с изображениями, добавленными в виде вложений
Я использую request.js для запроса изображений из Cloudinary, а затем помещаю каждое изображение в массив, который затем добавляется в качестве параметра вложения для Mailgun.
Это прекрасно работает для небольших изображений, но когда пользователь загружает большую серию высококачественных изображений, я получаю сообщение об ошибке.
Я попытался добавить ограничение размера файла 100 МБ в Multer, bodyParser.json и bodyParser.urlencoded, а также параметр Limit в 100 МБ.
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 }