You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Laravel存储文件访问出现404错误,如何获取正确的图片访问链接?

解决Laravel存储文件HTTP 404错误的方案

嘿,我来帮你搞定这个图片访问404的问题!核心原因其实很简单:你的文件存到了storage/app/public目录,但Web服务器只能访问项目根目录下的public文件夹,两者之间缺少一个关键的关联链接。下面是具体的解决步骤:

  • 建立Storage与Public的软链接
    Laravel专门提供了Artisan命令来创建这个关联,在项目根目录的终端里执行:

    php artisan storage:link
    

    执行后,你会在public目录下看到一个名为storage的软链接,它会直接指向storage/app/public文件夹。这样Web服务器就能通过public/storage访问到你上传的文件了。

  • 优化上传与URL生成代码(可选但推荐)
    你当前的代码可以简化,避免路径混淆:

    • 上传时明确指定使用public磁盘,这样返回的路径会更简洁
    • 生成URL时指定对应磁盘,确保路径正确

    优化后的代码如下:

    // 指定public磁盘上传文件到profile目录
    $path = $request->file('file-upload-photo-profile')->store('profile', 'public');
    // 生成该磁盘下的文件访问URL
    $user->photo_profile_url = Storage::disk('public')->url($path);
    
  • 正确渲染图片链接
    现在你可以直接用生成好的URL渲染图片,不需要再嵌套asset()(当然嵌套也没问题,只是没必要):

    <img src="{{ $user->photo_profile_url }}" alt="用户头像">
    

    如果习惯用asset(),也可以这样写,结果是一样的:

    <img src="{{ asset($user->photo_profile_url) }}" alt="用户头像">
    
  • 额外注意事项

    • 确保服务器对storage/app/publicpublic/storage目录有读写权限,不然上传或访问都会出问题
    • 如果是Windows服务器,php artisan storage:link可能无法自动创建软链接,这时候需要手动用mklink命令创建:
      mklink /D "C:\path\to\your\project\public\storage" "C:\path\to\your\project\storage\app\public"
      

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

火山引擎 最新活动