#node.js
Вопрос:
Я создаю конечную точку POST для загрузки изображения в AWS S3, но я получил ошибку, когда попытался использовать для замены информации об изображении, кроме данных base64
const imageAWS = catchAsyncErrors(async (req, res) => {
const { image } = req.body
// Prepare the image
const base64Data = new Buffer.from(
image.replace(/^data:image/w ;base64,/, ''),
'base64'
)
const type = image.split(';')[0].split('/')[1]
// Image params
const params = {
Bucket: '',
Key: `S{nanoid()}.${type}`,
Body: base64Data,
ACL: 'public-read',
ContentEncoding: 'base64',
ContentType: `image/${type}`,
}
// Upload to S3
S3.upload(params, (err, data) => {
if (err) {
return next(new ErrorHandler('Upload Failed', 400))
}
// log
console.log(data)
})
res.status(200).json({
success: true,
})
})
Сообщение об ошибке Почтальон
{
"success": false,
"error": {
"statusCode": 500,
"message": "Cannot read property 'replace' of undefined"
},
"message": "Cannot read property 'replace' of undefined"
}
Комментарии:
1.
req.body
существует, ноreq.body.image
не существует. Вы посмотрели, что на самом деле возвращает запрос?2. @LukeBriggs да, я создаю ключ изображения, используя данные формы на почтальоне. когда я верну свое тело
"----------------------------221091136581883415727306rnContent-Disposition: form-data; name="image"; filename="sa.jpeg"rnContent-Type: image/jpeg"
3. если
req.body
это только эта строка, строки не имеют свойства, называемогоimage
так, что попытка получитьaString.image
будет неопределенной. Что вы собираетесьconst { image } = req.body
делать?
Ответ №1:
Весьма вероятно, что req.body
это не объект, поэтому свойство image
from const { image } = req.body
не определено.
Вы можете использовать следующий метод для преобразования req.body
в объект, если это JSON: const { image } = JSON.parse(req.body)