Я использую Laravel 5.8 для загрузки файла на сервер через ajax, но не понимаю, что происходит не так. Все остальные данные отправляются за исключением входного файла.
Метод hasFile () всегда возвращает false, а input :: file () возвращает null.
Я знаю, что этот вопрос задавался много раз, но ни одно из решений не помогло мне.
JQuery
$(document).ready(function () {
$('#updateUser').click(function(){
var form = $('#updateForm');
var postData = new FormData($("#updateForm")[0]);
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
cache : false,
contentType: false,
processData: false,
url: form.attr('action'),
type: form.attr('method'),
dataType: 'json',
data: postData,
success : function(response){
console.log(response);
}
});
})
})
просмотреть файл
<form id="updateForm" class="ui form register-form" method="POST" action="{{ route('updateUserProfile') }}" enctype="multipart/form-data">
@csrf
<div class="field">
<label>Profile Photo</label>
<div class="two fields">
<div class="field">
<img src="{{ $current_user->profile_photo }}">
</div>
<div class="field">
<input type="file" name="profile_photo" placeholder="Profile Photo" class="" multiple="">
</div>
</div>
</div>
файл контроллера
namespace App\Http\Controllers\Auth;
use Auth;
use App\Functions;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\File;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Input;
public function updateUserProfile(Request $request)
{
$validators = Validator::make($request->all(), [
'first_name' => ['required', 'string', 'max:255'],
'last_name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
'mobile_no' => ['required', 'string', 'max:255'],
'dob' => ['required', 'string', 'max:255'],
'gender' => ['required', 'string', 'max:255'],
'country_id' => ['required', 'string', 'max:255'],
//'profile_photo' => ['image', 'mime_content_type(jpeg,png,jpg,gif,svg)', 'max:1024'],
'profile_photo' => 'image'|'mimes:jpg,jpeg,png',
]);
if ($validators->fails()) {
$result['success'] = false;
$result['messages'] = $validators->errors()->all();
return json_encode($result);
}
var_dump(input::file('profile_photo'));
var_dump($request->hasFile('profile_photo'));
}