2017-06-21 13 views
2

私はユーザーが自分のプロフィール画像を更新できる方法を作った。私はまた、新しいものに更新する場合、古いプロファイルの画像を削除する関数を追加しました。しかし、私はCall to undefined method Intervention\Image\File::delete()と言っているエラーを取得します。Laravel未定義のメソッドへの呼び出し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', '[email protected]_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> 

写真を変更するだけで問題ありません。ページをリロードすると、プロフィール画像は更新されますが、古い画像は削除されません。

+0

それが/インフロントが含まれているかどうかを確認するために$のlastpathを印刷しようと「アップロード/アバターを連結しながら、あなたは他の、それを削除する必要があります。//(someathは – Exprator

+0

を回の出現ます@Exprator私は 'DDを追加しました$ lastpath) '$ lastpathが定義されているコードの後に​​書かれていますが、Dharmeshが送信するコードを試した後、ページをリフレッシュしました。プロフィール画像を変更しなくても –

答えて

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)); 
    } 
+0

許可が拒否されたので、フォルダの右側に何かがあります。これを変更するにはどうしたらよいですか?このプログラムは、そのフォルダ内のものを変更することが許可される必要があります。 –

+0

許可の問題については、https://stackoverflow.com/questions/11389765/how-to-set-777-permission-on-a-particular-folderを参照してください。 –

関連する問題