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

Laravel 8中图片存入storage文件夹后无法显示求助

问题描述

我已将图片路径保存至MySQL数据库,但在视图中输出图片时无法显示,寻求帮助。

图片保存控制器代码

public function store(Request $request)
{
    //
    $request->validate([
        'carImage' => 'required|image|mimes:jpeg,png,jpg,gif', 
    ]);
    $imagePath = $request->file('carImage')->store('public/images');
    $image = new Mycar(); 
    $image->description = request('description');
    $image->owner = request('owner');
    $image->rate_per_day = request('rate');
    $image->image = $imagePath;
    $image->save();
    $id = $request->session()->get('id');

    return redirect('user/mycars/' . $id)->with('success_mg', 'car uploaded successfully');
}

视图展示图片代码

<div style=" width:60%;  margin: 20px auto;">
  <div class="text-center mb-2 mt-2">
  <img src="{{ asset('storage/'. $posts->image) }}" alt="" style="width: 100%; max-width: none; max-height: 100%; object-fit: cover; border-radius: 10px;"/>
</div>
解决方法
  1. 创建存储软链接
    Laravel的store('public/images')会把文件存在storage/app/public/images目录下,但前端要通过asset('storage/...')访问,必须先建立public/storage到storage/app/public的软链接。在项目根目录执行命令:

    php artisan storage:link
    

    这是最常见的原因,没做这一步的话,前端请求的路径对应不到实际文件位置。

  2. 核对路径一致性

    • 检查数据库Mycar表的image字段,确认存储的路径是public/images/xxx.jpg这类格式。
    • 确认storage/app/public/images下确实存在对应文件名的图片文件。
  3. 检查URL拼接
    当前视图里的asset('storage/'. $posts->image)会生成storage/public/images/xxx.jpg这样的URL,在软链接创建后,这个路径会正确映射到storage/app/public/images/xxx.jpg,如果没链接则会指向public/storage/public/images/xxx.jpg,显然没有文件。

  4. 权限排查
    确保storage/app/public目录和软链接后的public/storage目录有服务器可读权限,避免因权限问题导致图片无法加载。

内容的提问来源于stack exchange,提问作者Godwin Addetsi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:37:58