我在我的Laravel(5.4)网站上有一个上传头像的部分,如果用户还没有上传头像,根据他们的性别,它会显示一个男性或女性的“默认”头像。
这一切都很好,上传一个新的也很好,但当上传一个新的头像时,它会删除或覆盖默认的头像
(我的UserController)
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中
protected function create(array $data)
{
if($data['gender']){
$avatar = 'man.png';
}
else{
$avatar = 'woman.png';
}在我的(个人资料) edit.blade.php中
<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文件保持不变,有人能解释一下我做错了什么吗?
发布于 2017-08-09 20:05:57
if语句不起作用的原因是因为'woman.png'的计算结果为true,所以if语句本质上是:
if ($user->avatar !== 'man.png' || true)它将始终是true。
将if语句更改为:
if ($user->avatar !== 'man.png' && $user->avatar !== 'woman.png')
$file = public_path('uploads/avatars/' . $user->avatar);
if (File::exists($file)) {
unlink($file);
}
} 希望这能有所帮助!
发布于 2017-08-11 15:06:45
好的,
我让它像这样工作
$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');
}
}https://stackoverflow.com/questions/45589933
复制相似问题