以下代码中的“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
答案 0 :(得分:2)
有两个问题:
文件字段名称为“pic”而不是“photos”(这是Express侧使用的字段名称)。更改一个名称或另一个名称。
需要在enctype="multipart/form-data"
标记上明确设置<form>
属性,否则浏览器会将表单作为application / x-www-form-urlencoded发送,不包含文件输入数据
进行这些更改后,应按照req.files
文档中的说明填充multer
。