Multer-S3动态S3实例

时间:2018-07-10 16:05:29

标签: amazon-s3 aws-sdk multer multer-s3

我正在尝试使用 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对象。

我该如何辩解?

0 个答案:

没有答案