在前端使用Dropzone在一个请求中将多个文件上传到服务器,并使用Multer中间件来处理multipart / form-data。在Dropzone配置中设置uploadMultiple: true
,它会将[]附加到名称。例如,名称将是文件[0],文件1等。
服务器端代码:
var uploader = multer({dest: dest});
router.post(url, uploader.array('files', 30), function(req, res) {
...
});
但是,似乎multer()。array(fieldname)只允许fieldname匹配表单数据中的名称。否则,它会抛出LIMIT_UNEXPECTED_FILE错误。
通过将名称始终作为“字段”而不是附加[]或使刈割者处理不同的名称来修复它的任何建议吗?
答案 0 :(得分:1)
在您的情况下,客户端的输入属性名称必须是" files"。
<input type="file" name="files" />
答案 1 :(得分:0)
在Dropzone配置下,将 paramName 设置为返回名称的函数:
Dropzone.options.mainDropzone = {
autoProcessQueue: false,
uploadMultiple: true,
paramName: function(){
return "files";
},
previewsContainer: ".dropzone-previews"
}
确保使用该函数在服务器端返回的相同名称:
var upload = multer({
storage: Storage
}).array('files', 3);
答案 2 :(得分:0)
这对我有用
files.map(file => formData.append(
文件, file))