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

Laravel 8 使用spatie media library上传成功后图片无法显示如何解决

解决方案

下面是按优先级排序的修复步骤:

1. 修正模型保存与媒体添加的顺序(核心错误)

Spatie Media Library 要求关联媒体的模型必须先写入数据库、生成主键ID后,才能完成媒体关联。你当前代码先执行媒体添加、后保存模型,导致关联关系异常。
修改store方法代码如下:

public function store(Request $request)
{
    $categories = new ProductCategories();
    $categories->name         = $request->name;
    $categories->slug         = $request->slug;
    $categories->description  = $request->description;
    // 先保存模型,生成主键ID
    $categories->save();

    if($request->hasFile('photo') && $request->file('photo')->isValid()){
        $categories->addMediaFromRequest('photo')->toMediaCollection('category');
    }

    $request->session()->flash('message', 'Successfully created category');
    return redirect()->back();
}

2. 清理无效配置与缓存

  • 你自定义了public磁盘的根路径为public_path('images/media'),媒体文件本身就存放在站点公开可访问目录下,不需要php artisan storage:link生成的软链接,可以手动删除public/storage软链接避免路径冲突。
  • 执行命令清理配置缓存,确保修改的配置生效:
    php artisan config:clear
    

3. 校验.env配置

确认.env文件中APP_URL参数和你实际访问站点的前缀完全一致,比如本地测试时如果访问地址是http://localhost/butingting,就要配置为:

APP_URL=http://localhost/butingting

验证方法

修改完成后重新上传新的图片,访问$list->getFirstMediaUrl('category')输出的链接,若直接在浏览器地址栏可打开图片,则修复完成。之前上传的异常媒体数据和文件可直接删除后重新上传。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:15:03