2017-06-19 115 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,但是我在发布之前改了它。这不是真正的错误,谢谢你的答案。 –