Laravel9后台无法显示用户上传的付款凭证图片求助
问题排查与修复方案
1. 文件系统配置错误
你的public磁盘根目录配置不符合Laravel规范,默认public磁盘应指向storage/app/public(而非public/app/public),修改config/filesystems.php:
'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), // 修正此处路径 'url' => env('APP_URL').'/storage', 'visibility' => 'public', 'throw' => true, ],
2. 上传路径冗余重复
原上传代码的store('public/app/public')会导致路径嵌套重复(最终路径为storage/app/public/public/app/public/xxx.jpg),完全冗余。改为指定存储到public磁盘的子目录(比如专门存付款凭证的payment_proofs):
// 替换原上传路径代码 $path = $proof->store('payment_proofs', 'public');
修改后存储的路径会是payment_proofs/xxx.jpg,实际文件存放在storage/app/public/payment_proofs/下。
3. 确认存储符号链接存在
Laravel需要通过符号链接将storage/app/public映射到public/storage,才能通过Web访问存储的文件。执行以下Artisan命令:
php artisan storage:link
如果提示链接已存在,可先删除public/storage目录再重新执行命令。
4. 验证视图路径生成
确保视图中Storage::url()接收的是正确的相对路径,比如存储的payment_proofs/xxx.jpg,Storage::url($request->payment_proof_path)会自动生成/storage/payment_proofs/xxx.jpg的可访问路径。
额外检查点
- 查看数据库
payment_proof_path字段的值,确认存储的路径无重复前缀 - 检查服务器
storage/app/public/payment_proofs目录是否存在,文件是否上传成功,且Web服务器拥有该目录的读取权限
内容的提问来源于stack exchange,提问作者Dingakill
相关产品推荐
相关产品推荐

