【问题标题】:I'm totally faint in using multer-s3 to upload image to aws s3 bucket我在使用 multer-s3 将图像上传到 aws s3 存储桶时完全晕倒了
【发布时间】:2017-06-07 01:11:22
【问题描述】:

下面代码中的“upload.array('photos', 3)”是什么意思......

我的 html 代码。 (代码简化)

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

我的 expressjs 代码

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

【问题讨论】:

    标签: node.js express multer-s3


    【解决方案1】:

    有两个问题:

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

    • enctype="multipart/form-data" 属性需要在 &lt;form&gt; 标签上显式设置,否则浏览器会将表单作为 application/x-www-form-urlencoded 发送,其中不包含文件输入数据。

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

    【讨论】:

    • 感谢您的回复 mscdex, "upload.array("pic",3)" ... 那么 3 代表什么.....
    • The documentation 解释它,它是maxCount 参数(对该文件字段名称实施最大文件限制)。
    • 同样的错误“无法读取未定义的属性'长度'”即使将照片更改为图片.....抱歉
    • 我已更新我的答案以包含有关另一个问题的信息。
    • @mscdex 嗨,你能看看这个问题吗?非常感谢您的帮助。stackoverflow.com/questions/65479245/nodejs-multer-aws-s3
    猜你喜欢
    • 1970-01-01
    • 2019-03-18
    • 2017-03-13
    • 2021-09-09
    • 2021-04-04
    • 1970-01-01
    • 2017-10-17
    • 2017-12-23
    • 2018-07-13
    相关资源
    最近更新 更多