5

在前端使用 Dropzone 在一个请求中将多个文件上传到服务器,并使用Multer中间件来处理 multipart/form-data。在 Dropzone 配置中设置uploadMultiple: true,它将 [] 附加到名称。例如,名称将是 files[0]、files 1等。

服务器端代码:

var uploader = multer({dest: dest});
router.post(url, uploader.array('files', 30), function(req, res) {
   ...
});

但是,似乎 multer().array(fieldname) 只允许字段名与表单数据中的名称匹配。否则,它会抛出 LIMIT_UNEXPECTED_FILE 错误。

有什么建议可以通过将名称始终设为“字段”而不是附加 [] 或让 multer 来处理类似的不同名称来修复它?

4

3 回答 3

2

在您的情况下,客户端的输入属性名称必须是“文件”。

<input type="file" name="files" />
于 2017-01-19T13:43:52.433 回答
2

在 Dropzone 配置下,将paramName设置为返回名称的函数:

Dropzone.options.mainDropzone = {
    autoProcessQueue: false,
    uploadMultiple: true,
    paramName: function(){
        return "files";
    },
    previewsContainer: ".dropzone-previews"
}

确保使用函数在服务器端返回的相同名称:

var upload = multer({
    storage: Storage
}).array('files', 3);
于 2020-01-22T23:04:50.020 回答
0

这对我有用

files.map(file => formData.append(文件, file))

于 2021-03-25T17:11:33.273 回答