You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Storage图片无法显示问题排查与解决求助

Laravel 图片无法显示问题排查与解决

问题根源

你的数据库中$media->med_path存储的值是public/medias/jpg/57N8MJmsp2y8P0aexysV_200x200.jpg,而asset('storage/')已经对应到storage/app/public目录(通过软链和filesystems.php的public磁盘配置),两者拼接后生成的URL多了一层public,变成http://localhost:8000/storage/public/medias/...,但实际文件存储在storage/app/public/medias/...,对应正确的URL应该是http://localhost:8000/storage/medias/...,路径不匹配导致图片无法加载。

解决方法

方法1:修改视图中的路径拼接

直接移除med_path中的public/前缀,修改视图代码如下:

<img src="{{ asset('storage/' . str_replace('public/', '', $media->med_path)) }}" alt="Thumbnail" style="width: 100px; height: auto;">

方法2:修正数据库存储的路径(推荐)

如果是上传逻辑导致存储了多余的public/前缀,调整上传代码,让数据库只存储public磁盘下的相对路径(不含public/)。例如使用Laravel的存储门面上传时:

// 上传示例
$path = Storage::disk('public')->putFile('medias/jpg', $uploadedFile);
// $path 的值为 medias/jpg/xxx.jpg,直接存入数据库即可

之后视图中保留原代码即可正常加载:

<img src="{{ asset('storage/' . $media->med_path) }}" alt="Thumbnail" style="width: 100px; height: auto;">

验证

执行php artisan storage:link后,项目根目录的public/storage是软链指向storage/app/public,所以URL中的/storage/会直接映射到storage/app/public目录。你可以手动访问正确的URL(http://localhost:8000/storage/medias/jpg/57N8MJmsp2y8P0aexysV_200x200.jpg)确认图片是否能正常打开。

内容的提问来源于stack exchange,提问作者Pouya Vaghefi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 21:32:56