【问题标题】:Laravel not serving files from public dirLaravel 不提供来自公共目录的文件
【发布时间】:2020-11-22 14:52:52
【问题描述】:

我使用的是最新的 laravel 7.x。

问题是:正如标题所说,Laravel 为什么不从公共目录中提供服务。 我在 storage/app/public/img/Logo_original.png 中有一张图片,在 storage/app/public/css/style.css 中有一张 css

当我尝试获取 css 或 img 时,我从服务器返回 404 错误。

这些代码存在于 app.blade.php 中: css:<link rel="stylesheet" href="{{ asset('css/style.css') }}">

如果我使用检查元素并检查源代码,则它是一个 css 目录和一个 style.css 文件,但它是空的!

img:我尝试了很多方法,但最后一个是:

@php
  $url = asset('img/Logo_original.png');
  print('<img src='.$url.'>');
@endphp

我看过 4 个教程,以及 stackoverflow 的 3 种方法,但不幸的是,它们都没有帮助我解决它。

请帮我解开这个谜。

【问题讨论】:

  • 您是否创建了符号链接php artisan storage:link
  • 要获取正确的公共存储 URL,请使用 Storage::disk('public')-&gt;url('img/Logo_original.png) 资产来提供来自 /public 的文件
  • 您是否尝试像这样添加storageasset('storage/img/Logo_original.png');

标签: php html css laravel


【解决方案1】:

正如Laravel 的官方文档中所述,您需要:

  1. 使用php artisan storage:link 创建从public/storagestorage/app/public 的符号链接
  2. 使用 echo asset('storage/img/Logo_original.png'); 创建资产的 URL,在其路径中包括 storage。由于资产帮助函数将创建一个指向公用文件夹的 URL。并且 img 不存在,但通过上面的步骤 1,您在 public 文件夹中创建了一个名为 storage 的符号链接。所以正确的 url 应该是 http://localhost:8080/storage/img/Logo_original.png 可以用上面提到的方法创建
echo asset('storage/img/Logo_original.png');

【讨论】:

  • 非常感谢!我在链接中添加了 storage/,它起作用了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-29
  • 1970-01-01
  • 2014-07-18
  • 1970-01-01
相关资源
最近更新 更多