尝试通过单个AJAX请求将多个文件上传到Laravel 5后端时遇到了一些麻烦。
在前端,我使用以下代码来准备FormData对象:
var fd = new FormData();
fd.append("data", JSON.stringify(values));
fd.append("page_id", page_id);
files.forEach(function(file, index){
fd.append("file_"+index, file);
});
然后这是我的AJAX电话:
$.ajax({
type: 'POST',
url: '/file_test',
data: fd,
contentType: false,
processData: false,
success: function(response){
alert(response);
},
failure: function(response){
alert(response);
}
});
在后端,我尝试使用$request->allFiles()
和$request->file('file_0')
以及$_FILES
进行检索,但它们都是空的。
在@Pavel提到$_FILES
数组为空之后,我去检查了XHRRequest中发送的内容。我意识到我没有将文件本身附加到FormData对象,而是附加包含该文件的整个input
。
var files = [];
if(this.type == "file"){
if(this.files.length == 1){
values[$(this).attr('name')] = this.files[0].name;
//files.push(this); // ORIGINAL CODE
files.push(this.files[0]); // WORKING CODE!
}
}