我正在使用multer、aws-sdk和multer-s3 包以及 express。
当用户编辑个人资料时,用户可能会更改个人资料图片/头像。
我已经通过了 multer 对象
multer({storage: multer.memoryStorage()}).single('profileHeroImageEdit')
如果文件具有当前请求,那么我会将文件上传到 s3 存储桶,但我没有从upload_replace收到任何响应,其中req.file.location将提供 S3 存储桶的 url(文件的位置)。在upload_replace 中 ,我可以获取要上传的文件(req.file),但我想要上传文件到 S3 bucket 的位置。
我错过了什么?帮助将不胜感激
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
}
}