Как обновить изображение с помощью Axios с помощью контроллера Laravel? - PullRequest
0 голосов
/ 06 июля 2019

Я пытаюсь обновить изображение без перезагрузки страницы. Итак, я использовал 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),…}

Я не понимаю, работает ли вообще функция обновления?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...