Laravel Ajax CRUD上传图片无法显示,路径正确仍无效求助
Laravel 上传图片无法显示问题解决方案
核心问题分析
问题根源是Storage目录未建立Web可访问的软链接,同时<img>标签的路径写法不符合Laravel静态资源访问规范。
1. 生成Storage软链接
Laravel中storage/app/public目录的文件默认无法直接被Web访问,需要通过软链接映射到public/storage目录。在项目根目录执行以下Artisan命令:
php artisan storage:link
执行成功后,服务器就能通过/storage/xxx路径访问storage/app/public/xxx下的文件。
2. 修正Blade模板中的图片路径
替换当前的图片路径代码,使用Laravel官方推荐的asset()辅助函数生成正确的Web访问URL:
原代码:
<td><img src="../storage/app/public/profile/{{ $detail->profilepic }}" width="100px"></td> <td><img src="storage/app/public/sign/{{ $detail->signature }}" width="100px"></td>
修改后:
<td><img src="{{ asset('storage/profile/' . $detail->profilepic) }}" width="100px"></td> <td><img src="{{ asset('storage/sign/' . $detail->signature) }}" width="100px"></td>
asset()函数会自动拼接你的APP URL,确保路径在任何环境下都正确。
3. 额外验证步骤
- 检查文件存在性:确认图片确实存储在
storage/app/public/profile/和storage/app/public/sign/目录下,文件名与数据库中存储的完全一致。 - 权限检查:确保
storage目录及其子目录的权限设置正确,Web服务器用户(如www-data)拥有读写权限。 - 清除缓存:强制刷新浏览器(Ctrl+F5),避免旧路径缓存导致的显示异常。
内容的提问来源于stack exchange,提问作者Pranav Sompura
相关产品推荐
相关产品推荐

