[英]Can't receive files from JQuery Ajax request in Laravel
當嘗試上傳文件 CSV / Excel 文件並在 ajax 請求中接收它時,它沒有按預期工作。
我使用 formdata object 上傳文件,如下所示:
const formData = new FormData()
formData.append('file', file)
//upload the file to the server
Api.makeRequest('uploadFromFile', {
processData: false,
contentType: false,
enctype: 'multipart/form-data',
cache: false,
data: formData,
complete: function (xhr) {
if(xhr.status === 201 || xhr.status === 200){
console.log(xhr.responseJSON)
}else {
alert('error')
console.error(xhr.responseJSON)
}
}
})
正如我從文檔中讀到的,您必須像這樣提取它:
$file = $request ->file('file_key')
使用此語法時,出現錯誤,並且 Laravel 無法提取文件:
public function uploadFromFile(Request $request){
if($request->hasFile('file')){
$file = $request->file('file');
return $file;
}else{
return response()->json(['error' => 'No file uploaded'], 400);
}
但是,當我使用常規request->has()
function 時,它工作正常。 返回類型只是 object。 由於我無法以正確的格式獲取文件,我做錯了什么?
//This works, getting some data but not a proper file object
public function uploadFromFile(Request $request){
if($request->has('file')){
$file = $request->get('file');
return $file;
}else{
return response()->json(['error' => 'No file uploaded'], 400);
}
<script> var droppedFiles=''; //input file change event to call this function function FileUpload(e) { droppedFiles = e.target.files || e.dataTransfer.files; } $('#FrmId').on('submit', function (e) { var $form = $('#FrmId'); var $input = $form.find('input[type="file"]'); var form_data = new FormData($('#FrmId')[0]); if (droppedFiles) { $.each( droppedFiles, function(i, file) { form_data.append( $input.attr('name'), file ); }); } $.ajax({ type: "POST", enctype: "multipart/form-data", url: "url", data: form_data, contentType: false, cache: false, processData: false, }).done(function (data) { }).fail(function () { }); return false; }); </script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.