Как удалить старый аватар после загрузки нового на laravel? - PullRequest
0 голосов
/ 27 января 2019

Я пытался удалить старый аватар после загрузки нового аватара.Просто я не мог найти решение.Я новичок в laravel5, не могли бы вы помочь мне?Я использую проект из GitHub.пожалуйста, посмотрите на "Munafio Cubetalk" на GitHub.может быть, мне нужно изменить что-то еще.Он также не удаляет аватар пользователя, когда пользователь удаляет свою учетную запись.

    public function s_general(Request $request){
    $this->validate($request,[
        'username' => 'required|min:3|max:50',
        'avatar' => 'nullable|image|mimes:jpeg,png,jpg|max:1024',
        'fullname' => 'required',
        'email' => 'required|email'
    ]);
    if ($request['username'] == Auth::user()->username &&$request['fullname'] == Auth::user()->name && $request['email'] == Auth::user()->email && !$request->hasFile('avatar')) {
        return redirect()->back()->with('general_msg', Lang::get('trans.noChanges_MSG'));
    }else{
        $avatar = $request->file('avatar');
        if ($request->hasFile('avatar')) {
            $avatar_ext = $avatar->getClientOriginalExtension();
            $avatar_name = rand(9,999999999)+time().".".$avatar_ext;
            $avatar_new = $avatar->storeAs("avatar",$avatar_name);
        }else{
            $avatar_name = Auth::user()->avatar;
        }


        $update_general = User::where('uid',Auth::user()->uid)->update(['username' => $request['username'],'name' => $request['fullname'], 'email' => $request['email'],'avatar' => $avatar_name]);
        return redirect()->back()->with('general_msg', Lang::get('trans.changes_saved'));
    }

}

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Наконец я решил это.Я публикую свой отредактированный код.Если кому-то понадобится помощь позже.

  public function s_general(Request $request){

    $this->validate($request,[
        'username' => 'required|min:3|max:50',
        'avatar' => 'nullable|image|mimes:jpg,jpeg|max:1024',
        'fullname' => 'required',
        'location' => 'max:255',
        'bio' => 'max:340',
        'email' => 'required|email'
    ]);
    if ($request['username'] == Auth::user()->username &&$request['fullname'] == Auth::user()->name && $request['location'] == Auth::user()->location && $request['bio'] == Auth::user()->bio && $request['email'] == Auth::user()->email && !$request->hasFile('avatar')) {
        return redirect()->back()->with('general_msg', Lang::get('trans.noChanges_MSG'));
    }else{
    $avatar = $request->file('avatar');
    $user = Auth::user();
    $uid = Auth::user()->uid;
    $oldavatar = '/storage/avatar/'.$user->avatar;

    if ($request->hasFile('avatar')) {
        Storage::delete('$oldavatar');
        $avatar_ext = $avatar->getClientOriginalExtension();
        $avatar_name = $uid.".".$avatar_ext;
        $avatar_new = $avatar->storeAs("avatar",$avatar_name);
    }else{
        $avatar_name = Auth::user()->avatar;
    }


$update_general = User::where('uid',Auth::user()->uid)->update(['username' => $request['username'],'name' => $request['fullname'], 'bio' => $request['bio'], 'location' => $request['location'], 'email' => $request['email'],'avatar' => $avatar_name]);

return redirect()->back()->with('general_msg', Lang::get('trans.changes_saved'));

}

0 голосов
/ 27 января 2019

Вы можете использовать метод удаления laravel, чтобы сделать это, убедитесь, что вы импортируете use Illuminate\Support\Facades\Storage; верх вашего класса контроллера.

public function s_general(Request $request){
$this->validate($request,[
    'username' => 'required|min:3|max:50',
    'avatar' => 'nullable|image|mimes:jpeg,png,jpg|max:1024',
    'fullname' => 'required',
    'email' => 'required|email'
]);
if ($request['username'] == Auth::user()->username &&$request['fullname'] == Auth::user()->name && $request['email'] == Auth::user()->email && !$request->hasFile('avatar')) {
    return redirect()->back()->with('general_msg', Lang::get('trans.noChanges_MSG'));
}else{
    $avatar = $request->file('avatar');
    if ($request->hasFile('avatar')) {

        // update your code in here
        $avatar_name = Auth::user()->avatar;
        Storage::delete($avatar_name);

        $avatar_ext = $avatar->getClientOriginalExtension();
        $avatar_name = rand(9,999999999)+time().".".$avatar_ext;
        $avatar_new = $avatar->storeAs("avatar",$avatar_name);
    }else{
        $avatar_name = Auth::user()->avatar;
    }


    $update_general = User::where('uid',Auth::user()->uid)->update(['username' => $request['username'],'name' => $request['fullname'], 'email' => $request['email'],'avatar' => $avatar_name]);
    return redirect()->back()->with('general_msg', Lang::get('trans.changes_saved'));
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...