如何解决在 aws s3 上上传图像
我正在开发一个 mern 堆栈应用程序。现在我想在 aws S3 上上传我的图像,所以我需要指导,如果用户在 s3 上上传图像,那么我如何为该特定用户取回图像。 如果用户上传了个人资料图片,那么我如何为该用户检索图像,因为我将它们存储在 s3 而不是 mongodb 上。我需要指导。
const s3 = new aws.S3({
accessKeyId: "",secretAccessKey: "",region: "",});
const upload = (bucketName,id) =>
multer({
storage: multerS3({
s3,bucket: bucketName,Metadata: function (req,file,cb) {
cb(null,{ fieldName: file.fieldname });
},key: function (req,cb) {
console.log(id)
cb(null,`image-${id}.jpeg`);
ID=''
},}),});
exports.setProfilePic =('/updateuser/updateimg/:id',(req,res)=>{
const uploadSingle = upload("medic18577",req.params.id).single(
"img"
);
uploadSingle(req,res,async (err) => {
if (err)
{ return res.status(400).json({ success: false,message: err.message })};
try {
const user = await User.findById(req.params.id)
if(user){
ID=user.id
console.log(ID)
user.img = req.file.location
//res.status(200).json({ data: req.file.location,msg:'img uploaded' });
await user.save()
res.json(user.img)
}else {
return res.json('User not Found')
}
} catch (err) {
console.error(err.message)
res.status(500).send('Server Error')
}
});
})
解决方法
您可以将上传图像的文件名/密钥存储在您的 mongoDB 中,这样当您想显示它时,您可以将文件名/密钥附加到您的 AWS url。
{
"user": "John","image": "1235.jpg"
}
同时显示:
<img src=`${awsUrl}/${user.image}` />
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。