Laravel调用未定义的方法Intervention \ Image \ File :: delete()

时间:2017-06-21 12:11:48

标签: php laravel laravel-5 laravel-5.2

我制作了一个方法,允许用户更新他们的个人资料图片。我还添加了一个功能,如果它们更新为新的配置文件,它会删除它们的旧配置文件图片。但我收到错误Call to undefined method Intervention\Image\File::delete()

造成这种情况的原因是什么?在下面的代码中,它对我来说非常有意义。我希望你们能帮忙。提前致谢

代码: UserController.php

public function update_avatar(Request $request) {

    $this->middleware('auth');

    if ($request->hasFile('avatar')) {
        $avatar = $request->file('avatar');
        $filename = Auth::user()->username . time() . '.' . $avatar->getClientOriginalExtension();
        Image::make($avatar)->fit(300,300)->save( public_path('/uploads/avatars/' . $filename));

        $user = Auth::user();
        $user->avatar = $filename;
        $user->save();

        //Verwijderd vorige foto
        if ($user->avatar != 'default.jpg') {
            $path = 'uploads/avatars/';
            $lastpath = Auth::user()->Avatarpath;
            File::delete(public_path($path . $lastpath));
        }
    }

    return view('user.profile', array('user' => Auth::user()));

路线:Route::post('{username}/profile', 'UserController@update_avatar');

应该这样做的表单。

<div class="row">
        <div class="col l12 m12 s12">
            <div class="card">
                <div class="card-content">
                    <form enctype="multipart/form-data" action="profile" method="POST">
                        <input type="file" name="avatar">
                        <input type="hidden" name="_token" value="{{ csrf_token() }}">
                        <input type="submit" class="pull-right btn btn-primary" value="Change profile">
                    </form>
                </div>
            </div>
        </div>
    </div>

更改图片效果很好。如果我重新加载页面,配置文件图片会更新,但不会删除旧图片。

1 个答案:

答案 0 :(得分:3)

  

试试这个。这有帮助。

 public function update_avatar(Request $request) {

        $this->middleware('auth');

        if ($request->hasFile('avatar')) {
            $avatar = $request->file('avatar');
            $filename = Auth::user()->username . time() . '.' . $avatar->getClientOriginalExtension();
            Image::make($avatar)->fit(300,300)->save( public_path('/uploads/avatars/' . $filename));

            $user = Auth::user();
            $user->avatar = $filename;
            $user->save();

            //Verwijderd vorige foto
            if ($user->avatar != 'default.jpg') {
                 $path = public_path('uploads'.DIRECTORY_SEPARATOR.'avatars'. DIRECTORY_SEPARATOR.Auth::user()->Avatarpath);
                  if (file_exists($path)) {
                    unlink($path);
                  }
            }
        }

        return view('user.profile', array('user' => $user));
    }