Multer上传文件数组失败

时间:2016-07-19 12:26:29

标签: node.js multer

我有一组发送到服务器的文件对象。  “files [0] =(文件对象),文件[1] = ......” Multer没有识别它的字段名称,“request.files”是空的,但是“request.body是文件数组。

3 个答案:

答案 0 :(得分:4)

我的问题是我将文件数组附加到我上传为fd.append(files, fileList)的FD中,我应该做的是一个for循环,它将文件数组中的每个文件对象附加到带有字段名称的FD的文件。 谢谢大家的答案。

答案 1 :(得分:0)

从我的描述中我理解的是,您正在使用upload.array方法接受来自同一输入字段的多个文件。确保为文档中指定的此方法指定字段名:

  

.array(fieldname [,maxCount])

     

接受一个名为fieldname的文件数组。如果上传的maxCount文件超过maxCount,则可以选择出错> out。文件数组将存储在req.files中。

这意味着,如果您有如下输入:

<input type="file" name="foobar" multiple>

然后在服务器端使用:

var upload = require('multer')({ dest:'uploads/' });
upload.array('foobar');

答案 2 :(得分:0)

我假设你能够获取文件对象数组,如果你打印文件数组,console.log(files)=&gt; [文件,文件,文件,......等]。然后, 获取您的文件和字段,创建FromData对象并将您需要发送的所有内容附加到服务器,如下所示。确保把你的内容类型&#39;如果未定义,您的浏览器将为您分配边界,后端将尝试拒绝该请求。

this.uploadFileToUrl = function(file, title, text, uploadUrl){
    var payload = new FormData();

    payload.append("title", title);
    payload.append('text', text);

    for(var x = 0; x<file.length; x++) {
        payload.append('myfile', file[x]);
    }

    console.log(payload);

    return $http({
        url: uploadUrl,
        method: 'POST',
        data: payload,
        //assign content-type as undefined, the browser
        //will assign the correct boundary for us
        headers: { 'Content-Type': undefined},
        //prevents serializing payload.  don't do it.
        transformRequest: angular.identity
    });
}
相关问题