1

以下代码中的“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
4

1 回答 1

2

有两个问题:

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

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

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

于 2017-06-07T01:30:12.027 回答