【发布时间】:2023-04-05 16:44:01
【问题描述】:
我正在使用 multer 、aws-sdk 和 multer-s3 软件包以及 express。
当用户编辑个人资料时,用户可以更改个人资料图片/头像。
我已经传递了 multer 对象
multer({存储: multer.memoryStorage()}).single('profileHeroImageEdit')
如果有当前请求的文件,那么我会将文件上传到 s3 存储桶,但我没有收到来自 upload_replace 的任何响应,其中 req.file.location 将提供S3 存储桶的 url(文件的位置)。 在 upload_replace 内部,我可以获取要上传的文件(req.file),但我想要上传文件到 S3 存储桶的位置。
我错过了什么?帮助将不胜感激
router.put("/:id",multer({ storage:
multer.memoryStorage()}).single('profileHeroImageEdit'),
middleware.checkProfileOwnership,function(req, res){
if(isFileExists(req)==false){
delete req.body.profileHeroImage
}
else{
console.log('file has')
var upload_replace = multer({
limits:{
fileSize:MAX_FILE_SIZE,
files:1
},
storage: multerS3({
s3: photoBucket,
bucket: BucketName,
acl: 'public-read',
metadata: function (req, file, cb) {
cb(null, { fieldName: file.fieldname });
},
key: function (req, file, cb) {
cb(null,Date.now().toString())
}
})
}).single('profileHeroImageEdit')
upload_replace(req, res, function (err,log) {
console.log('request log')
console.log(req.file.location)
console.log()
});
}
Profile.findByIdAndUpdate(req.params.id, req.body.profile, function(err, updatedProfile){
if (err){
res.redirect("/profiles");
} else {
res.redirect("/profiles/" + req.params.id);
}
});
});
function isFileExists(request){
if(request.file)
{
return true
}
else{
return false
}
}
【问题讨论】:
标签: node.js amazon-s3 multer multer-s3 s3-bucket