使用multer在S3 API上传图像返回undefined

时间:2017-06-28 12:01:35

标签: node.js api amazon-s3 upload multer

我正在构建一个用于上传图像并将其直接存储在S3存储上的API。为此,我使用Postman.Method是POST,输入类型是file。当我使用req.files或req.file时,我得到了未定义。

Utils.js:

getS3SignUrl: function( uri ){
   return s3_client.getSignedUrl('putObject',{Bucket:config.aws.bucket,Key:uri,ACL :"public-read"})
}

在主文件中我使用了这些:

var bodyParser = require('body-parser');
var upload = require('multer')();
var utils = require('../service/utils.js');

router.post('/edit-profile', upload.single('newfile'), function(req, res) {
    console.log(req.file);  
  });
});

在控制台中,我得到了未定义,但是当我使用调试器和req.body时,我得到了这个:enter image description here

所以,似乎我在req.body中有它,但我怎么能从这里拿走呢?

1 个答案:

答案 0 :(得分:1)

除了multer之外,我安装并包含了multerS3模块:

var multerS3 = require('multer-s3');

然后,我配置了它。我也使用我应用enctype="multipart/form-data"

的表单对其进行了测试
router.post('/ceva', multer({  storage: multerS3({ s3: s3_client, bucket: "****", acl: '**',  metadata: function (req, file, cb) {  cb(null, {fieldName: file.fieldname}); }, key: function (req, file, cb) {
      cb(null, "users/10/1"); } }) }).single('newfile'), function(req, res) {
    console.log(req.files);
    res.send('da');
});

因此,文件已在S3存储上成功上传。