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

Laravel 5.4上传图片无法显示问题求助

解决Laravel图片上传后404无法访问的问题

看起来你已经完成了大部分正确的配置,但问题出在图片URL的生成方式上,导致请求路径错误引发404。下面一步步帮你排查和解决:

核心问题分析

你的public磁盘配置里已经指定了url为env('APP_URL').'/storage',这意味着所有存储在public磁盘的文件,访问路径应该以/storage开头。但你当前的图片src是http://tddforum.com/avatars/Aew15JlTZAIrldYR6gXyFJ0lriK4p1vhVNim5oBo.jpeg——缺少了/storage前缀,服务器会去项目根目录的public/avatars文件夹找文件,但这个文件夹并不存在,自然返回404。

解决方案

1. 使用Laravel内置方法生成正确的图片URL

不要手动拼接图片路径,改用Storage::disk('public')->url()方法来生成符合配置的URL。修改你的控制器代码:

// AvatarController.php
$new_file_name = Storage::disk('public')->putFile('avatars',$request->file('avatar'));
// 生成正确的访问URL
$imageUrl = Storage::disk('public')->url($new_file_name);
// 将$imageUrl传递给视图
return view('your-view-name', compact('imageUrl'));

然后在视图中使用这个生成好的URL:

<img src="{{ $imageUrl }}" alt="johnDoe" width="100" height="100">

这样生成的src会自动带上/storage前缀,变成http://tddforum.com/storage/avatars/Aew15JlTZAIrldYR6gXyFJ0lriK4p1vhVNim5oBo.jpeg,就能通过符号链接正确访问到storage/app/public/avatars里的文件了。

2. 再次确认符号链接的正确性

虽然你说已经创建了符号链接,但可以重新执行Laravel的官方命令确保链接正确:

php artisan storage:link

执行后,检查项目根目录的public/storage是否确实是指向storage/app/public的符号链接(Linux/macOS可以用ls -l public/storage查看,Windows可以右键查看快捷方式目标)。

3. 验证.env中的APP_URL配置

确保.env文件里的APP_URL和你实际访问的域名完全一致:

APP_URL=http://tddforum.com

如果URL不一致,生成的图片路径也会出错。

额外检查

  • 确认storage/app/public/avatars下的文件权限正确(通常设置为644,文件夹权限755),避免因权限问题导致无法访问。
  • 清除浏览器缓存后再测试,有时候旧的缓存会导致路径不生效。

内容的提问来源于stack exchange,提问作者Yeasir Arafat Majumder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:07:23