图片未加载

时间:2019-08-24 20:48:48

标签: php html laravel laravel-5

我有一些代码可以更改用户图片。但是更改后,我必须按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');
}

我认为我应该在索引操作中刷新公用文件夹,但是如何?

1 个答案:

答案 0 :(得分:0)

如果新图像具有与旧图像相同的URL(在您的情况下,名称和路径相同),则浏览器将使用具有在他自己的缓存中。

除了要求用户按Ctrl+F5(或Ctrl+Shift+R)以清除页面缓存之外,针对此问题的最佳解决方案是:

    每次用户更改图像本身时,
  1. 名称更改为图像。
  2. 在图像?v=2上添加版本化的查询字符串(类似URL),以强制浏览器请求新图像:URL与它具有缓存中的所有内容,因此被迫获取新资源。