Javascript 如何使用节点在AWS上保存图像
我正在使用node.js,并希望将我在base64中收到的图像放在aws上。一切都进行得很顺利并加载了它们,但当我打开它们时,它会给我一个错误,告诉我我的格式不对。如何获取图像链接以将其存储在数据库中 base64表格:Javascript 如何使用节点在AWS上保存图像,javascript,node.js,amazon-web-services,amazon-s3,Javascript,Node.js,Amazon Web Services,Amazon S3,我正在使用node.js,并希望将我在base64中收到的图像放在aws上。一切都进行得很顺利并加载了它们,但当我打开它们时,它会给我一个错误,告诉我我的格式不对。如何获取图像链接以将其存储在数据库中 base64表格: data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/...... 上载图像的功能: const s3 = new aws.S3({ params: { Bucket: process.env.S3_BUC
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控制台时,如果我下载图像,则会出现错误“格式错误”我想出了一个解决方案:
我刚才补充说
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;
}