我使用multer-s3将图像上传到aws s3存储桶时非常微弱

时间:2017-06-07 01:11:22

标签: node.js express multer-s3

以下代码中的“upload.array('photos',3)”表示....

我的HTML代码。 (代码简化为了简化)

 <form action="/upload" method="POST">
 <input type="file" name="pic" id="pic" accept="image/*">
 <input type="submit">
 </form>

我的快递代码

AWS.config.update({
  accessKeyId: "xxxxxxxxxxxxx",
  secretAccessKey: "yyyyyyyyyy", 
  "region": "zzzzzzzzz" ,
  signatureVersion: 'v4'
});

var s3=new AWS.S3();

var upload = multer({
  storage: multerS3({
    s3: s3,
    bucket: 'imgcontainer',
    metadata: function (req, file, cb) {
      cb(null, {fieldName: file.fieldname});
    },
    key: function (req, file, cb) {
      cb(null, Date.now().toString())
    }
  })
})

app.post('/upload', upload.array('photos', 3), function(req, res, next) {
  res.send('Successfully uploaded ' + req.files.length + ' files!')
})

输出:

 Cannot read property 'length' of undefined

1 个答案:

答案 0 :(得分:2)

有两个问题:

  • 文件字段名称为“pic”而不是“photos”(这是Express侧使用的字段名称)。更改一个名称或另一个名称。

  • 需要在enctype="multipart/form-data"标记上明确设置<form>属性,否则浏览器会将表单作为application / x-www-form-urlencoded发送,不包含文件输入数据

进行这些更改后,应按照req.files文档中的说明填充multer