Laravel 10 数据表链接存储文件夹PDF文件时出现404错误
Laravel 10 数据表链接存储文件夹PDF文件时出现404错误
嘿,我来帮你搞定这个404问题,看起来主要是存储路径映射和Blade语法错误这两个点导致的,咱们一步步来修复:
1. 先解决存储目录的Web访问权限问题
Laravel里storage/app/public目录的文件默认无法直接通过Web访问,需要先创建一个软链接,把这个目录映射到项目的public/storage目录,这样Web服务器才能读取到里面的文件。
在终端运行这个Artisan命令:
php artisan storage:link
如果之前已经创建过但链接失效了,可以先删除项目根目录下的public/storage文件夹,再重新运行上面的命令。
2. 修正视图里的链接路径和Blade语法
你之前犯了两个小错误:
- 路径错误:软链创建后,正确的Web访问路径应该是
/storage/pdf/文件名,而不是/storage/app/public/pdf/文件名 - Blade语法错误:使用
asset()或url()时,不能在{{ }}里再嵌套{{ }},直接用字符串拼接变量就行
把表格里的PDF链接代码改成下面这样:
<td><a href="{{ asset('storage/pdf/' . $report_archive->reportLink) }}" target="_blank">{{ $report_archive->reportLink }}</a></td>
或者用url()的写法也可以:
<td><a href="{{ url('storage/pdf/' . $report_archive->reportLink) }}" target="_blank">{{ $report_archive->reportLink }}</a></td>
3. 最后验证几个细节
- 确认PDF文件确实存在于
storage/app/public/pdf目录下,且文件名和数据库里的reportLink完全一致(注意Linux服务器区分大小写,别写错文件名) - 本地开发的话,清理浏览器缓存或者用隐私模式打开页面,避免旧的缓存路径干扰
- 检查Web服务器的根目录是否指向项目的
public文件夹,确保public/storage软链能被正确识别
这样修改后,应该就能正常打开PDF文件了!
备注:内容来源于stack exchange,提问作者Maranda Dominguez
相关产品推荐
相关产品推荐

