Node.js Multer上传文件数组失败

Node.js Multer上传文件数组失败,node.js,multer,Node.js,Multer,我有一个发送到服务器的文件对象数组。 文件[0]=(文件对象),文件[1]= Multer无法识别其字段名,“request.files”为空,但“request.body包含文件数组。从您的描述中我了解到,您正在使用upload.array方法从同一输入字段接受多个文件。确保按照文档中的指定为此方法指定字段名: .array(fieldname[,maxCount]) 接受文件数组,所有文件的名称均为fieldname。如果上载的文件超过maxCount,则可选错误>输出。文件数组将存储在re

我有一个发送到服务器的文件对象数组。 文件[0]=(文件对象),文件[1]=
Multer无法识别其字段名,“request.files”为空,但“request.body包含文件数组。

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

.array(fieldname[,maxCount])

接受文件数组,所有文件的名称均为fieldname。如果上载的文件超过maxCount,则可选错误>输出。文件数组将存储在req.files中

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

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

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

.array(fieldname[,maxCount])

接受文件数组,所有文件的名称均为fieldname。如果上载的文件超过maxCount,则可选错误>输出。文件数组将存储在req.files中

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

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

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

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

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

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
    });
}
this.uploadFileToUrl=函数(文件、标题、文本、上传URL){
var payload=new FormData();
有效载荷。附加(“标题”,标题);
payload.append('text',text);

对于(var x=0;x我假设您能够获取文件对象数组,如果您打印文件数组,console.log(files)=>[file,file,file,….etc],那么, 获取您的文件和字段,创建FromData对象,并将需要发送到服务器的所有内容附加到以下位置。请确保将您的“内容类型”设置为未定义,您的浏览器将为您分配边界,否则后端将尝试拒绝该请求

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
    });
}
this.uploadFileToUrl=函数(文件、标题、文本、上传URL){
var payload=new FormData();
有效载荷。附加(“标题”,标题);
payload.append('text',text);

对于(var x=0;xPosting一个代码示例,并没有解释它是如何工作的。你能写一些想法,这是如何工作的,以及这可能有助于回答这个问题吗?谢谢你,Michael,我知道了,我解释了答案。发布一个代码示例,并没有解释它是如何工作的。你能写一些想法,这是如何工作的,这可能有什么帮助吗回答问题?谢谢迈克尔,我明白了,我解释了答案。你帮我节省了很多时间,我的朋友。你帮我节省了很多时间,我的朋友。