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

Laravel 8 Sail环境下浏览器无法显示storage存储的图片如何解决

问题根因与修复方案

1. 修正文件存储逻辑

你的默认文件磁盘配置为public,对应根目录是storage/app/public,但你当前上传的图片存到了storage/app/images路径下,说明存储时没有正确命中public磁盘,修改控制器存储代码如下:

// 原代码
$image = Storage::put('images', $request->image); 
// 替换为 显式指定public磁盘存储
$image = Storage::disk('public')->put('images', $request->image);

同时检查.env文件中是否存在以下配置,确保默认磁盘生效:

FILESYSTEM_DRIVER=public

修改后新上传的图片会自动存到storage/app/public/images目录下,之前已上传的图片可手动移动到该目录即可复用。

2. 确认软链接有效性

你在WSL2环境通过Sail运行项目,必须在Sail容器内或者WSL2终端执行软链接创建命令,Windows宿主环境创建的软链接无法被Linux容器识别:

sail artisan storage:link

执行完成后进入Sail容器验证软链接指向正确:

sail shell
ls -la public
# 确认storage链接指向 -> ../storage/app/public

3. 修正站点地址配置

检查.env文件中的APP_URL配置,和你实际访问项目的地址保持一致,比如你本地访问地址是http://localhost:8000,则配置为:

APP_URL=http://localhost:8000

如果Sail映射了非80端口,必须在APP_URL中带上对应端口,否则asset()方法生成的资源地址端口错误,自然无法访问图片。

4. 优化模板图片渲染写法

不用手动拼接路径,直接使用Laravel提供的Storage门面生成公开访问地址,写法更稳妥:

{{-- 原写法 --}}
<img class="w-full" src="{{ asset( 'storage/' . $article->image) }}" alt="article_image">
{{-- 替换为 --}}
<img class="w-full" src="{{ Storage::url($article->image) }}" alt="article_image">

完成以上操作后清理配置缓存即可生效:

sail artisan config:clear

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:39:02