我正在尝试使用 multer 和 multer-s3 for Nodejs 将文件上传到s3存储桶。我现在遇到的问题是我想动态设置 s3实例,因为s3帐户和存储桶取决于我的用户设置。
我有以下代码:
我的上传者
var uploader = multer({
storage: multerS3({
s3: function(req, file, cb){
cb(null, new AWS.S3({
// my s3 settings from req.body or getting directly from my db
}))
},
bucket: function (req, file, cb){
cb(null, req.body.bucket)
},
metadata: function (req, file, cb) {
cb(null, {
fieldName: file.fieldname
});
},
key: function (req, file, cb) {
console.log(`Key is ${req.body.prefix + file.originalname}`);
cb(null, req.body.prefix + file.originalname)
}
})
}).single('file');
api.post('/upload', uploader, function (req, res, next) {
if (err)
return res.status(500).json({ message: err });
res.status(200).json({
message: 'uploaded'
});
});
问题在于 multer-s3 不允许将s3选项的函数用作参数,而允许使用s3对象。
我该如何辩解?