我有一些代码可以更改用户图片。但是更改后,我必须按control+shift+R
才能看到更改。
我将File::delete()
更改为unlink()
。但这没用。
控制器代码:
public function index(){
$id = Auth::id();
$info = Admin::select('name', 'login', 'image')-
>where('id', $id)->first();
return view('admin.index')->with('info', $info);
}
public function changes(Request $request){
$this->validate($request,[
'name' => 'required',
'login' => 'required',
]);
$login = Auth::user()->login;
$admin = Admin::where('login', $login)->first();
if($admin){
$admin->name = $request['name'];
$admin->login = $request['login'];
if(!is_null($request['old_password']) and !is_null($request['new_password'])){
$this->validate($request,[
'new_password' => 'required',
'old_password' => 'required',
]);
if(Hash::check($request['old_password'], Auth::user()->password)){
$new_password = Hash::make($request['new_password']);
$admin->password = $new_password;
}
}
if(!is_null($request['profile_image'])){
$this->validate($request,[
'profile_image' => 'image|mimes:jpeg,png,jpg',
]);
if (!is_null(Auth::user()->image)) {
$admin_image = public_path() .'/'. Auth::user()->image;
if((File::exists($admin_image))){
File::delete($admin_image);
}
}
$image = $request->file('profile_image');
$image_extension = $image->getClientOriginalExtension();
$image_name= Auth::id() .'.'. $image_extension;
$image->move(public_path('admin_assets/assets/images/users'), $image_name);
$admin->image = $image_name;
}
$admin->save();
}
return redirect()->route('admin.index');
}
我认为我应该在索引操作中刷新公用文件夹,但是如何?
答案 0 :(得分:0)
如果新图像具有与旧图像相同的URL
(在您的情况下,名称和路径相同),则浏览器将使用具有在他自己的缓存中。
除了要求用户按Ctrl+F5
(或Ctrl+Shift+R
)以清除页面缓存之外,针对此问题的最佳解决方案是:
?v=2
上添加版本化的查询字符串(类似URL
),以强制浏览器请求新图像:URL
与它具有缓存中的所有内容,因此被迫获取新资源。