laravel-admin 上传头像 巨坑

laravel-admin内置的上传文件和上传头像的方法,同时它保存在数据库的图片路径都是相对public目录下面的index.php文件,保存在数据库的位置也就是如下图
在这里插入图片描述
小编在重新编辑用户头像时,选择自定义的图片上传,上传功能是没有毛病的,图片确实是保存到服务器public/upload/images目录下,可是小编刷新页面却发现,后端返回和头像图片路径是http://localhost/public/upload/images/132.jpg,在本地服务器却是报404找不到图片路径,后端返回正确的路径应该是http://127.0.0.3/upload/images/132.jpg,小编顿时懵了
laravel-admin 上传头像 巨坑_第1张图片
最后通过浏览器dom生成的html元素找到对应的源码,找到对应的视图文件
在这里插入图片描述
对应strorage/framework/views/f852b000ac598c98e34ebc3cbfa6b37ac3e21e0a.php
发现它的文件是这样写的

   User Image

然后小编去找Admin::user这个方法
这个类在vendor/encore/laravel-admin/src/Admin.php
laravel-admin 上传头像 巨坑_第2张图片
小编接着找Auth这个类的父类却没有找到,真实令人费解,在这个方法中打log进行调试发现这个方法调用了很多次,在这个替换头像的路径显然不可取,小编最后很无耐在页面上进行替换路径

     " class="img-circle" alt="User Image">

左侧账号路径
在这里插入图片描述
对应strorage/framework/views/81bd61f1883db82d185b2278e5b4eebfa080fa50.php
对图片路径进行统一修改

  
" class="img-circle" alt="User Image">

最后就是表单图片路径,这个最坑了,小编把所有框架视图看了几遍也没有找到,最后发现它是动态生成的,最后小编想了一招
在/vendor/encore/resources/views/form.bade.php
文件里面添加一段js进行修正图片路径

window.onload=function(){
    //获取请求域名:
    $domain = document.domain;

    //获取file 组件下面的图片路径
    $headerimgurl=$('.kv-file-content img').attr('src');
    $arr=$headerimgurl.split("http://localhost/public/");
    if($arr.length>0&&$arr!=undefined&&$arr!=null){
        $temp=$arr[1];
       if($temp!=undefined){
           $path_url="http://"+$domain+"/"+$temp;
           //修正图片路径
           $('.kv-file-content img').attr('src',$path_url);
       }
    }
}

最后刷新页面,图片路径就矫正过来了
laravel-admin 上传头像 巨坑_第3张图片

你可能感兴趣的:(PHP)