Laravel Blade文件中图片无法显示问题求助
问题解决步骤
你的问题出在存储路径与符号链接不匹配:php artisan storage:link默认是把storage/app/public/目录链接到public/storage/,但你的图片存在storage/app/safety/,不在public子目录下,所以通过asset("storage/...")访问不到。
给你三个可行方案:
方案一:调整图片存储目录(最推荐)
- 把
storage/app/safety/目录移到storage/app/public/下,变成storage/app/public/safety/ - 修改Blade中的图片路径代码:
->addColumn('image', function ($gasSafety) { return '<img src="'.asset("storage/safety/{$gasSafety->image}").'" alt="profile Pic" height="200" width="200">'; })
这样storage/app/public/safety/会被映射到public/storage/safety/,通过asset就能正常访问。
方案二:创建额外的符号链接
如果不想移动图片,手动给safety目录建符号链接:
- Linux/Mac:在项目根目录执行命令
ln -s ../storage/app/safety public/safety - Windows:以管理员身份打开命令提示符,进入项目根目录执行
mklink /D public\safety ..\storage\app\safety
然后修改Blade代码中的路径:
->addColumn('image', function ($gasSafety) { return '<img src="'.asset("safety/{$gasSafety->image}").'" alt="profile Pic" height="200" width="200">'; })
方案三:配置自定义文件磁盘
- 打开
config/filesystems.php,在disks数组中添加:
'safety' => [ 'driver' => 'local', 'root' => storage_path('app/safety'), 'url' => env('APP_URL').'/safety', 'visibility' => 'public', ],
- 然后用Laravel的Storage门面生成URL,修改Blade代码:
->addColumn('image', function ($gasSafety) { return '<img src="'.Storage::disk('safety')->url($gasSafety->image).'" alt="profile Pic" height="200" width="200">'; })
- 最后还是需要给这个磁盘创建符号链接(同方案二的命令)。
另外,如果你不确定原有符号链接是否正常,可以先删除再重建:
- Linux/Mac:
rm public/storage,然后执行php artisan storage:link - Windows:直接删除
public/storage文件夹,再执行php artisan storage:link
内容的提问来源于stack exchange,提问作者abu abu
相关产品推荐
相关产品推荐

