Я отправляю данные с веб-страницы в другой разработанный мной API, который будет получать их в форме JSON. Эта веб-страница имеет форму, а данные формы содержат 2 изображения и некоторые текстовые данные. Что я сделал, так это то, что я поместил изображение в буфер с помощью Multer и переназначил исходный req.body.userImage для буферизованного изображения. API на другом конце получит все req.body как JSON и сохранит его в базе данных MongoDB. Поскольку тип данных userPicture - Buffer, я поместил в буфер изображение, загруженное с помощью формы, и теперь пытаюсь отправить его в этот API. Но буферизованное изображение не может быть отправлено, так как это проект Node.js, который я использовал HTTP-метод Node.js, я также использовал некоторые другие модули из NPM, и от всех них я получаю то же самое код ошибки: 413 (слишком большая полезная нагрузка). Как теперь отправить буферизованное изображение? Должен ли я изменить дизайн API на другом конце, чтобы сначала получить необработанное изображение, а затем сразу же после этого поместить изображение в буфер? Если это так, то как я могу отправить необработанное изображение в этот API?
const upload = multer({
limits: {
fileSize: 2000000,
},
fileFilter(req, file, cb) {
if (!file.originalname.match(/\.(jpg|png|jpeg|svg)$/)) {
return cb(new Error("Please upload an image"));
}
cb(undefined, true); //means go ahead and accept the given upload
},
});
app.post("/postData", upload.any('photos'), async (req, res) => {
console.log('data send here')
// console.log(req.body)
// console.log(req.body.name)
// console.log(req.files[0].buffer)
let distroLogo = await sharp(req.files[0].buffer)
.resize({
width: 300,
height: 300
})
.png()
.toBuffer();
req.body.logo = distroLogo
let userPicture = await sharp(req.files[1].buffer)
.resize({
width: 300,
height: 300
})
.png()
.toBuffer();
req.body.userProfilePicture = userPicture
const data = JSON.stringify(req.body)
const options = {
hostname: '***API ADDRESS***',
port: 443,
path: '/**PATH**',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': data.length
}
}
const reque = https.request(options, (res) => {
console.log(`statusCode: ${res.statusCode}`)
reque.on('data', (d) => {
process.stdout.write(d)
})
})
reque.on('error', (error) => {
console.error(error)
})
reque.write(data)
reque.end()
}), (error, req, res, next) => {
res.status(400).send({
error: error.message
})
}