Я пытаюсь обновить изображение без перезагрузки страницы. Итак, я использовал axios, и мне было трудно заставить его работать.
Это моя форма :
<form id="avatar-upload" action="{{route('profile.update',['id'=>Auth::id()])}}" name="avatar-upload" method="POST" enctype="multipart/form-data">
{{method_field('PUT')}}
@csrf
<div class="avatar-wrapper">
<img class="profile-pic" src="{{asset('storage/'. Auth::user()->avatar)}}" />
<div class="upload-button">
<i class="fa fa-arrow-circle-up" aria-hidden="true" ></i>
</div>
<input id="avatar" name="avatar" class="file-upload" type="file" accept="image/*"/>
<input id="authenticated_user_id" type="hidden" value="{{Auth::id()}}">
</div>
{{-- <p>{{Auth::id()}}</p> --}}
</form>
Это мой код аксиоса:
$('#avatar-upload').submit(function (e) {
e.preventDefault();
var authenticated_user_id = $('#authenticated_user_id').val();
console.log(authenticated_user_id);
var form_data = new FormData(this);
axios.put('http://localhost:8000/profile/' + authenticated_user_id, {
avatar: form_data,
}).then((response) => {
console.log( response.config);
}).catch((error) => {
console.log(error);
});
});
Это мой метод обновления:
public function update(Request $request, $id)
{
if($request->hasFile('avatar')){
$logged_in_user = Auth::user();
$avatar = $request->file('avatar');
$filename = Str::random().'.'.$avatar->getClientOriginalExtension();
Image::make($avatar)->resize(300,300)->save(public_path('storage/users/'.date('F').date('Y').'/'.$filename));
$image_with_storage_path = 'users/'.date('F').date('Y').'/'.$filename;
$logged_in_user->avatar = $image_with_storage_path;
$logged_in_user->update(['avatar'=> $image_with_storage_path]);
}
return response('success');
}
Ожидаемый результат: «успех» вместе с обновлениями изображения в базе данных
Фактический результат: {url: "http://localhost:8000/profile/1", метод:" put ", данные:" {"avatar": {}} ", заголовки: {…}, transformRequest: Array (1),…}
Я не понимаю, работает ли вообще функция обновления?