使用 JavaScript 的方法:
var data = new FormData();
$.each($("input[type='file']")[0].files, function(i, file) {
data.append('file', file);
});
$.ajax({
type: 'POST',
url: '/your/url',
cache: false,
contentType: false,
processData: false,
data : data,
success: function(result){
console.log(result);
},
error: function(err){
console.log(err);
}
})
如果您多次调用data.append('file', file),则请求将包含文件数组。
来自MDN web文档:
"FormData
接口的 append()
方法在 FormData
对象中追加新值到现有键名,若键名不存在则添加该键,与 FormData.set
不同之处在于,如果指定的键已经存在,FormData.set
会用新值覆盖所有现有值,而 append()
则会将新值附加到现有值集合的末尾。"
我使用 Node.js 和多部分处理程序中间件 Multer 获取数据,如下所示:
router.post('/trip/save', upload.array('file', 10), function(req, res){
// Your array of files is in req.files
}
fileToUpload[]
is wrong, should befileToUpload
- Houssam BadrifileToUpload
不起作用。正如答案中建议的那样,它应该是fileToUpload[]
。你的评论让我花了一个小时才弄清楚发生了什么。 - Andre W.