首页 > 解决方案 > 在 Laravel 5.8 中更新个人资料照片时删除以前的照片

问题描述

上传新照片时如何删除以前的照片?

这是我的更新头像功能

public function update_avatar(Request $request){

    $request->validate([
        'avatar' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
    ]);

    $user = Auth::User();

    $avatarName = $user->id.'_avatar'.'.'.request()->avatar->getClientOriginalExtension();

    $request->avatar->storeAs('avatars',$avatarName);

    $user->avatar = $avatarName;
    $user->save();

    return back()
        ->with('success','You have successfully upload image.');
}

编辑:

我将照片存储在 STORAGE > APP > PUBLIC >AVATARS

这段代码做了什么,它只会覆盖上一张照片。例如,我有我当前的2_avartar.jpg,如果我用 PNG 扩展文件更新我的照片,在添加2_avartar.jpg时仍然会保留2_avartar.jpg.png。如果我再次更新 GIF 文件2_avartar.jpg并将2_avartar.png保留并2_avartar.gif添加新的。如果您在更新照片之前上传与您所拥有的相同的扩展名,则没有问题。我正在寻找的解决方案是在添加新照片之前删除所有 2_avatar.*。

提前致谢!

标签: laraveluploadphoto

解决方案


如果你是昨天向我建议这个的朋友,请再次发布。这是我的错误,我没有检查文件夹名称。

    $folder = 'avatar';
    Storage::delete($folder.'/'.$user->avatar); 

再次回答不是我的,昨天回答的已经被删除了,因为我认为它不起作用。


推荐阅读