我使用node.js并且希望在base64中添加我收到的图像的aws。一切顺利并加载它们但是当我打开它时它会给我一个错误,告诉我我的错误形式。如何获取图像链接以将其存储在数据库中?
base64表格:
data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/......
上传图片的功能:
const s3 = new aws.S3({ params: { Bucket: process.env.S3_BUCKET } });
let data = this.createData(req.body.image);
s3.putObject(data, (err, response) => {
if (err) {
console.log(err);
}
else {
console.log(response)
/*tmp = task
.update(req.body)
.then(() => res.status(200).send(JSON.stringify(task.id_creator)))
.catch(error => res.status(400).send(error));*/
}
})
createData(image) {
//TODO NOME CARTELLA
let data = {
Key: 'test1',
Body: image,
ContentEncoding: 'base64',
ContentType: 'image/jpeg'
};
return data;
}
一切都很顺利,回应是:
{ ETag: '"20eaa681c71825d8f57472eb378be651"',
VersionId: 'kjQCDdfoq5H0Clhbs79SU4JiIUq8BgOn' }
但是如果我下载图片时我在我的存储桶中进入s3控制台会给我一个错误('格式错误')
答案 0 :(得分:1)
我找到了一个解决方案: 我刚刚添加了
let buf = new Buffer(req.body.image.replace(/^data:image\/\w+;base64,/, ""),'base64');
并将buf作为数据发送。 我添加了一个ACL参数:
createData(image) {
//TODO NOME CARTELLA
let data = {
Key: 'test1',
Body: image,
ContentEncoding: 'base64',
ContentType: 'image/jpeg',
ACL: 'public-read'
};
return data;
}