如何使用Laravel 5中的ajax自动将照片上传到数据库

时间:2017-07-16 15:51:21

标签: javascript ajax database laravel-5 image-uploading

我是Laravel的新手,我认为我正在以正确的方式编码,但它没有工作,数据响应是成功的,但照片没有正确上传而没有进入数据库

在我的刀片中

<form role="form" method="POST" action="" enctype="multipart/form-data">
    {{ csrf_field() }}
    <div class="profile-user-photo">
        <div class="profile-user-photo-wrap">
            <div class="profile-user-photo-wrap-circle">
                <img src="{{ assets_url('img/profile/profile_user_photo_default.png') }}" alt="" class="profile-user-img">  
            </div>
            <label for="profile-user-photo-file" class="profile-user-photo-file-label">
                <div class="profile-user-photo-add">+</div>
            </label>
            <input type="file" style="width:10px;" name="photo" accept="image/*" class="profile-user-photo-file" id="profile-user-photo-file">
        </div>
    </div>
</form>

在javascript中

if( $('#profile-user-photo-file').length != 0 ){
    $('#profile-user-photo-file').change( function(){
        $.post('{{ route('add-photo') }}',
            {
                photo: $('input[file="photo"]').val()
            }
            ).done(function(data){
                $("#msg").html(data.message);
        }).fail(function(data){
            $("#msg").html(data.responseJSON.message);
        });
    })
}

在我的控制器中

public function addPhoto(User $user, Request $request)
{
    try {
        $user = User::findOrFail(Sentinel::getUser()->id);
    } catch (ModelNotFoundException $e) {
        return response()->json(['message' => 'User Not Found'], 422);
    }
    dd($request->file('photo'));
    $file_to_deletes = [];
    $this->validate($request, [
        'photo'          => 'image',
    ]);
    if ($request->file('photo')) {
        $file_to_deletes[] = $user->photo;
        $user->photo = $this->uploadAFile($request->file('photo'), User::IMAGE_PATH);
    }
    if (!$user->update($request->only(['photo']))) {
        return response()->json(['message' => 'Something wrong with database'], 422);
    }

    Storage::delete($file_to_deletes);

    return response()->json(['success' => 1, 'message' => 'Update Photo Success']);
}

0 个答案:

没有答案