Laravel动态拼接员工头像路径不显示 静态路径正常问题排查
问题根因
动态拼接的图片路径里多了一个多余的前置空格,导致路径和服务器实际文件位置不匹配,图片加载失败。
问题出在头像存储逻辑的代码里:
// 错误代码段 if ($request->file('picture')) { $file = $request->file('picture'); $filename = date('YmdHis') . "." . $file->getClientOriginalExtension(); $file->move('profile_picture/', $filename); $data['picture'] = " $filename"; // 这行的$filename前多打了一个半角空格 }
给picture字段赋值时,在文件名前多加了一个空格,动态拼接URL时最终生成的src地址格式为/profile_picture/ 20220615232745.jpg,路径斜杠和文件名之间存在空格,服务器无法定位到对应文件。
而写死的静态URL路径为/profile_picture/20220615232745.jpg,没有多余空格,和服务器上的实际文件路径完全匹配,因此可以正常加载。
修复方案
- 修正存储逻辑的赋值代码,去掉文件名前的多余空格,将对应代码改为:
$data['picture'] = $filename;
修改完成后新上传的头像不会再出现路径空格问题。
- 清理数据库存量数据:将用户表中
picture字段已存储的值,全部去掉开头的前置空格,否则之前上传的头像仍然无法正常加载。
内容的提问来源于stack exchange,提问作者Kairaoi Ientumoa
相关产品推荐
相关产品推荐

