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'))
,它会向我显示数据。
答案 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';