2017-07-22 46 views
0

JS:訪問FORMDATA在Laravel

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'))它讓我看到的數據。

+2

我不不知道到底發生了什麼。但是,能夠上傳文件的表單應該具有以下屬性:'method =「post」enctype =「multipart/form-data」' – SaidbakR

回答

1

您需要直接通過formData無鑰匙作爲第二個參數和設置contentTypefalse

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';