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

Laravel无法加载storage存储的图片 控制台报404资源不存在错误

你的404错误是因为存储在数据库的文件路径和实际可访问的Web路径不匹配导致的。Laravel执行php artisan storage:link后,会将storage/app/public目录映射到Web根目录的public/storage路径,所以存放在storage/app/public/products下的文件,实际Web访问路径应该是/storage/products/xxx,而不是你当前存的/public/products/xxx。

步骤1:调整存储时的路径写入逻辑

修改ProductController的store方法中图片路径保存的代码,将写入数据库的路径调整为可直接访问的Web路径:

foreach ($images as $image)
{
    $newImage = new ProductImage();
    $fileName = basename($image);
    // 存储位置不变,仍然放在storage/app/public/products下
    $storagePath = "/public/products/{$product->id}/{$fileName}";
    Storage::move($image, $storagePath);
    // 写入数据库的路径替换前缀,改为Web可访问路径
    $newImage->file = str_replace('/public/', '/storage/', $storagePath);
    $newImage->product_id = $product->id;
    $newImage->save();
}

步骤2:确认视图调用逻辑无需额外修改

你当前视图中使用asset($image['file'])的逻辑可以保持不变,调整路径后生成的地址会自动匹配实际文件位置。

额外校验项

如果修改后仍有问题,检查以下配置:

  • 确认项目public目录下存在storage软连接,Windows环境下执行php artisan storage:link需要开启管理员权限,否则可能生成无效的快捷方式
  • 确认config/filesystems.php中public磁盘配置为默认值,root指向storage_path('app/public'),url前缀为/storage
  • 上传后的文件权限设置正确,Web服务进程有读取storage/app/public目录的权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:36:04