访问Laravel

时间:2017-07-22 09:36:34

标签: php jquery ajax laravel

JS:

var file = e.originalEvent.dataTransfer.files[0];
var formData  = new FormData();

formData.append('file', file)

$.ajaxSetup ({
    processData: false
});

$.post('/addaltproduct',
    {
        file: formData
    },
    function (data) {
        console.log(data);
}).fail(function (xhr, textStatus, errorThrown) {
        console.log(xhr.responseText);
});

控制器:

if ($request->file('file')) {
    return 'OK';
}
return 'No file';

作为回报,我总是得到“没有文件”,但如果我在JS中运行console.log(formData.get('file')),它会向我显示数据。

1 个答案:

答案 0 :(得分:1)

您需要直接传递formData而不使用密钥作为第二个参数,并将contentType设置为false

var file = e.originalEvent.dataTransfer.files[0];
var formData  = new FormData();

formData.append('file', file);
formData.append('_token', '{{ csrf_token() }}');

$.ajaxSetup ({
    processData: false,
    contentType: false
});

$.post('/addaltproduct', 
    formData,
    function (data) {
        console.log(data);
}).fail(function (xhr, textStatus, errorThrown) {
        console.log(xhr.responseText);
});

然后在您的控制器中,您可以检查文件

if ($request->hasFile('file')) {
    if($request->file('file')) {
        return 'OK';
    }
}
return 'No File';