Laravel框架图片可存入数据库与文件夹但前端无法显示问题求助
问题原因及修复方案
1. 前端资源路径错误
你当前模板里图片src写的是相对路径img/{{$image->image ?? ''}},会随着当前访问页面的URL动态拼接路径,导致路径404。Laravel访问public目录下的静态资源必须用asset()助手函数生成绝对路径。
修复apperance.blade.php里的img标签代码:
// 把原来的img标签替换成这个 <img class="img-responsive" src="{{ asset('img/'.($image->image ?? '')) }}" style="margin-top: {{$image->position ?? ''}}">
2. 图片存储路径未明确指定
你调用move()方法时只传了相对路径img,不同Laravel版本默认相对路径的根目录不一致,可能会把图片存在非public目录下,导致web无法访问。
修复imageProcessController的postupload方法里的move代码:
// 把$image = $file->move(...)那行替换成这个,明确指定存在public下的img目录 $image = $file->move( public_path('img'), sprintf('%s-%s.%s', time(), "abc", explode('/', $file->getMimeType())[1]));
3. 最新图片查询逻辑错误
latest()方法仅接收单个排序字段作为参数,你传入两个字段latest('image','position')属于错误用法,会导致查询返回的不是最新上传的图片记录,拿到的文件名自然不对。
修复imageProcessController的upload方法里的查询代码:
// 替换原来的查询语句,按创建时间倒序取最新一条 $image=DB::table('images')->latest('id')->first(); // 如果你需要多字段排序可以这么写: // $image=DB::table('images')->orderBy('image','desc')->orderBy('position','desc')->first();
4. 额外校验项
- 确认public目录下的img文件夹权限为755,保证web服务有权限读取文件
- 图片上传完成后可以直接在浏览器访问
你的域名/img/数据库里存的文件名,测试能不能直接打开图片,如果打不开就是存储位置或者权限问题
内容的提问来源于stack exchange,提问作者sana rana
相关产品推荐
相关产品推荐

