使用JavaScript FormData检索在Laravel中上载的文件

时间:2018-03-29 21:05:25

标签: javascript php ajax laravel laravel-5

尝试通过单个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!
    }
}

0 个答案:

没有答案