首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上传新头像后不要删除“默认”头像

上传新头像后不要删除“默认”头像
EN

Stack Overflow用户
提问于 2017-08-09 19:53:19
回答 2查看 847关注 0票数 0

我在我的Laravel(5.4)网站上有一个上传头像的部分,如果用户还没有上传头像,根据他们的性别,它会显示一个男性或女性的“默认”头像。

这一切都很好,上传一个新的也很好,但当上传一个新的头像时,它会删除或覆盖默认的头像

(我的UserController)

代码语言:javascript
复制
   public function update(Request $r)

{

                $this->validate($r, [
                    'location' => 'required',
                    'about' => 'required|max:355'
                ]);

                Auth::user()->profile()->update([
                'location' => $r->location,
                'about' => $r->about

                ]);
    return back()->with('msg', 'Profile successfully edited');

$user = User::find(Auth::user()->id);

// Handle the user upload of avatar
if ($r->hasFile('avatar')) {
    $avatar = $r->file('avatar');
    $filename = time() . '.' . $avatar->getClientOriginalExtension();
     Image::make($avatar)->resize(300, 300)->save('uploads/avatars/' . $filename);
    $user = Auth::user();
    $user->avatar = $filename;
    $user->save();
}
    // Delete current image before uploading new image
    if ($user->avatar !== 'man.png' || 'woman.png') {
         //$file = public_path('uploads/avatars/' . $user->avatar);
        $file = 'uploads/avatars/' . $user->avatar;
        //$destinationPath = 'uploads/' . $id . '/';
    }

        if (File::exists($file)) {
            unlink($file);
        }


    return back()->with('msg', 'Profile successfully edited');



        }




    }

在我的RegisterController中

代码语言:javascript
复制
protected function create(array $data)
{

    if($data['gender']){

        $avatar = 'man.png'; 
    }

    else{

       $avatar = 'woman.png'; 
    }

在我的(个人资料) edit.blade.php中

代码语言:javascript
复制
<form enctype="multipart/form-data" action="{{ route('profile.update') }}" 
 method="post">
{{ csrf_field() }}

                        <div class="form-group">

                                    <label for="avatar" >Change Avatar</label>
                                    <input type="file" name="avatar" class="form-control" accept="image/*">
                                    <input type="hidden" name="_token"   value="{{ csrf_token() }}">


                           </div>

我想让male和female.png文件保持不变,有人能解释一下我做错了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-09 20:05:57

if语句不起作用的原因是因为'woman.png'的计算结果为true,所以if语句本质上是:

代码语言:javascript
复制
if ($user->avatar !== 'man.png' || true)

它将始终是true

将if语句更改为:

代码语言:javascript
复制
if ($user->avatar !== 'man.png' && $user->avatar !== 'woman.png')

    $file = public_path('uploads/avatars/' . $user->avatar);

    if (File::exists($file)) {
        unlink($file);
    }
} 

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2017-08-11 15:06:45

好的,

我让它像这样工作

代码语言:javascript
复制
$user = User::find(Auth::user()->id);

// Handle the user upload of avatar
if ($r->hasFile('avatar')) {
    $avatar = $r->file('avatar');
    $filename = time() . '.' . $avatar->getClientOriginalExtension();

}



    // Delete current image before uploading new image

if ($user->avatar !== 'man.png' && $user->avatar !== 'woman.png')

        $file = 'uploads/avatars/' . $user->avatar;

if (File::exists($file)) {
    unlink($file);
}

    Image::make($avatar)->resize(300, 300)->save('uploads/avatars/' . 
    $filename);
    $user = Auth::user();
    $user->avatar = $filename;
    $user->save();        
    return back()->with('msg', 'Profiel is bijgewerkt');



               }




     }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45589933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档