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

Laravel 8 已上传到storage的文件如何在show.blade.php中正常显示?

问题原因和解决方法

1. 路径重复拼接错误

你在FileController.php的文件上传逻辑中,已经给file_path字段拼接了/storage/前缀,存储的字段值格式为/storage/uploads/[文件名]。但你在show.blade.php的iframe中又额外加了/storage/uploads/前缀,最终拼接出的访问路径会变成/storage/uploads//storage/uploads/[文件名],路径错误自然会提示文件不存在。
对应修改blade代码即可:

<iframe src="{{ $file->file_path }}"  width="400" height="400"></iframe>

2. 路由缺少模型绑定参数

你的show方法使用了Laravel的路由隐式模型绑定public function show(File $file),但web.php中的对应路由没有配置参数,无法匹配到对应的文件数据。修改路由配置:

Route::get('/uploadshow/{file}', [FileUpload::class, 'show'])->name('upload.show');

后续访问展示页面时需要传入对应文件的ID,比如跳转时可以使用return redirect()->route('upload.show', $fileModel);

3. 确认已创建storage软链

Laravel的storage/app/public目录默认需要创建软链到public/storage才能被外部访问,如果你没有执行过对应命令,在项目根目录运行:

php artisan storage:link

如果修改后依然报错,可以先在blade中打印{{ $file->file_path }},对比输出的路径和实际存储的文件路径是否匹配,确认文件真实存放在storage/app/public/uploads目录下即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:36:09