Laravel 8 存储在public目录的视频在blade模板无法加载播放如何解决
Laravel页面视频无法加载播放解决方案
修正后的代码
show.blade.php
<video width="320" height="240" controls> <source src="{{ asset('video/'.$news->video) }}" type="video/mp4"> <source src="{{ asset('video/'.$news->video) }}" type="video/ogg"> 您的浏览器不支持HTML5视频播放 </video>
NewsController.php 无需修改,原有逻辑正常
分步排查方案
- 路径正确性校验
打开浏览器F12控制台,切换到「网络」标签刷新页面,查看视频资源的请求状态:- 状态码404:确认
$news->video存储的文件名和public/video目录下的实际文件名完全一致(Linux环境大小写敏感);如果视频实际存放在storage/app/public/video目录下,需先执行命令php artisan storage:link创建软链接,同时将资源引用路径改为{{ asset('storage/video/'.$news->video) }} - 状态码403:检查
public/video目录及内部文件的可读权限,确保web服务器用户有读取权限 - 状态码200但无法播放:替换为已知可正常播放的测试mp4文件硬编码路径测试,排除原视频损坏、转码错误、格式不匹配的问题
- 状态码404:确认
- 服务端MIME配置校验
自定义部署的服务器可能缺少对应视频格式的MIME声明,可手动添加:- Apache环境可在站点根目录.htaccess文件中添加:
AddType video/mp4 .mp4 - Nginx环境可在站点配置的types块中添加:
video/mp4 mp4;
- Apache环境可在站点根目录.htaccess文件中添加:
内容的提问来源于stack exchange,提问作者Shahed Khan
相关产品推荐
相关产品推荐

