使用Dropzone上传多个带有节点覆盖

时间:2015-11-06 15:13:42

标签: javascript node.js dropzone.js multer busboy

在前端使用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错误。

通过将名称始终作为“字段”而不是附加[]或使刈割者处理不同的名称来修复它的任何建议吗?

3 个答案:

答案 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))