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

Laravel+Vue案例图片上传与展示问题:图片无法访问

图片无法访问的解决方法

问题描述

其他功能正常,但图片访问时返回错误:Cannot GET /storage/public/CQu7g4X98APkiMSbCGlqyiJhaXzLaEk8P0pZXaD3.jpg

原因分析

  1. Laravel中存储到storage/app/public的文件需要通过软链接对外开放访问,当前未创建该链接
  2. 数据库存储的路径是public/xxx.jpg,前端拼接后生成/storage/public/xxx.jpg,多了一层不必要的public/前缀,导致路径错误

解决步骤

1. 创建存储软链接

在项目根目录下执行Artisan命令,建立public/storage到storage/app/public的软链接:

php artisan storage:link

该操作仅需执行一次,之后上传的文件即可通过/storage/xxx路径正常访问。

2. 修正前端图片路径

修改前端展示图片的代码,去除路径中的public/前缀:

<img v-if="casee.image" :src="'/storage/' + casee.image.replace('public/', '')" alt="Case Image">

可选优化:后端直接返回可访问路径

若不想在前端处理路径,可修改后端代码,生成并返回正确的访问URL:

// 生成文件访问URL
$url = Storage::url($path);

$case = casee::create([
    'title' => $request->title,
    'description' => $request->description,
    'caseTypeId' => $request->caseTypeId,
    'amountneeded' => $request->amountneeded,
    'uid' => $request->uid,
    'visible' => $request->visible,
    'image' => $path, // 仍存储原始路径,或直接存储$url
]);

return response()->json(['image' => $url]);

此时前端可直接使用返回的URL作为图片地址:

<img v-if="casee.image" :src="casee.image" alt="Case Image">

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:55:17