使用Dropzone通过节点复用器上载多个文件时出现LIMIT_UNEXECTED_FILE问题

LIMIT_UNEXPECTED_FILE issue when using Dropzone uploading multiple files with node multer

本文关键字:LIMIT 文件 FILE UNEXECTED 问题 Dropzone 节点 复用器 上载 使用      更新时间:2023-09-26

在前端使用Dropzone在一个请求中将多个文件上传到服务器,并使用Multer中间件处理多部分/表单数据。在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_UNEXECTED_FILE错误。

有什么建议可以通过将名称始终设置为"fields"来修复它,而不是附加[]或使multer处理这样的不同名称?

在您的情况下,客户端的输入属性名称必须是"files"。

<input type="file" name="files" />

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

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

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

var upload = multer({
    storage: Storage
}).array('files', 3);

这对我有效

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