私はユーザーが自分のプロフィール画像を更新できる方法を作った。私はまた、新しいものに更新する場合、古いプロファイルの画像を削除する関数を追加しました。しかし、私は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>
写真を変更するだけで問題ありません。ページをリロードすると、プロフィール画像は更新されますが、古い画像は削除されません。
それが/インフロントが含まれているかどうかを確認するために$のlastpathを印刷しようと「アップロード/アバターを連結しながら、あなたは他の、それを削除する必要があります。//(someathは – Exprator
を回の出現ます@Exprator私は 'DDを追加しました$ lastpath) '$ lastpathが定義されているコードの後に書かれていますが、Dharmeshが送信するコードを試した後、ページをリフレッシュしました。プロフィール画像を変更しなくても –