我有一组发送到服务器的文件对象。 “files [0] =(文件对象),文件[1] = ......” Multer没有识别它的字段名称,“request.files”是空的,但是“request.body是文件数组。
答案 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
});
}