2017-06-19 38 views
1

我想使用Ajax和Laravel上傳文件,每當我嘗試上傳一個文件時它將返回空。這是Laravel方法:Laravel:通過Ajax發送文件

public function save_vehicles(Request $request){ 
    $files=$request->file('input_file_vehicles'); 
    return response()->json(['File: '.$files]); 
    \Log::info($files); 
} 

這是Ajax的功能:

var save_vehicles=function(input_file){ 
    var formData = new FormData(); 
    formData.append("input_file_vehicles",input_file); 
    return $.ajax({ 
     type: 'GET', 
     dataType: 'json', 
     processData: false, 
     contentType: false, 
     data: formData, 
     url: '/save/vehicles' 
    }); 
} 

這個調用的結果是:

「文件:」

它返回空。

+0

請發表您的形式以及 – btl

+2

input_file_vehicles!= input_file_vehicle(你發送「input_file_vehicles」阿賈克斯,但在你的Laravel文件期望「input_file_vehicle」) –

+0

本來是input_file_vehiculo,但我在這裏發帖之前改變了它。 –

回答

1

jQuery代碼

var save_vehicles=function(input_file){ 
    var formData = new FormData($('#formElem')); 
    return $.ajax({ 
     type: 'POST', 
     dataType: 'json', 
     processData: false, 
     contentType: false, 
    headers: { 
     'X-CSRF-TOKEN': '{{ csrf_token() }}' 
    }, 
     data: formData, 
     url: '/save/vehicles' 
    }); 
} 

Laravel代碼

$destinationPath = 'path/th/save/file/'; 
$image = $request->file('input_file_vehicles'); 
$name = $image->getClientOriginalName(); 
$extension = $image->getClientOriginalExtension(); 
$file_name = $name; 
$image->move($destinationPath,$file_name); 
-2

你的形式看起來應該像這樣

<form action="/" name="myForm" id="myForm" method="post" enctype='multipart/form-data'> 
</form> 
+1

使用AJAX時,這並不重要。事實上,你甚至不需要表單包裝器。 – Ohgodwhy

0

要附加input_file_vehicles但在嘗試訪問input_file_vehicle在控制器方法。

+0

對不起,原來是input_file_vehiculo,但是我在發佈之前改了它。這不是真正的錯誤,謝謝你的答案。 –