Laravel-存储::文件($user->电子邮件)将不需要的正斜杠返回到文件夹


  • Laravel 5.4
  • Win10上的XAMPP

我真的需要一劳永逸地理解哪个方法返回正斜杠,哪个方法返回后斜杠。

我已经将我的图像保存在一个文件夹中,该文件夹以每个连接的用户的电子邮件命名为:

$userImages = Storage::files($user->email);

这个结果给了我:

array:7 [▼
0 => "userEmail@mail.com/88bt97XslJMpre4dpJZO0ZRV9EV9GQbJw3FcQ4u8.png"
1 => "userEmail@mail.com/dBfhlwB5HtNatUUCchZkA5PmqAxqruZi1zV3x3Ue.png"
2 => "userEmail@mail.com/kbdJkR0oydplRA773uo6GzbYMfPJrtWILuBcuUQB.png"
3 => "userEmail@mail.com/LHn80pVlrCPEj0YJcy4U6v8kTCuAOU43HGmuBNMs.png"
4 => "userEmail@mail.com/MHkX31Dv5WmLtR8TsW4DgLTsQKjMwDbOrz3OlU4u.png"
5 => "userEmail@mail.com/tebwcupwS4vU3BOsiLT5TUO298ImY5DprTHWnCef.png"
6 => "userEmail@mail.com/YdMHREMBIQbinBw8IqBvfOLjigt5CS0XNAEUE4Le.png"
]

这很酷,因为现在我所要做的就是在前面解析它,但由于我需要给这些URL一个前缀,我使用了storage_path(),如下所示:

@if($userImages)
@foreach($userImages as $image)
<img src="{{storage_path().'\'.$image}}">
@endforeach
@else
doesn't exist
@endif

现在得到的斜线不匹配如下:

G:xampphtdocslaraGostorageuserEmail@mail.com/88bt97XslJMpre4dpJZO0ZRV9EV9GQbJw3FcQ4u8.png

第一个斜杠遵循storage_path()的斜杠约定,但我从控制器中得到的是:$userImages数组有一个不同的斜杠约定。

如果您能告诉我使用storage_path是否有问题,或者我是否应该使用另一种Laravel方法,我会很高兴。。

我也很乐意知道是否有办法知道哪些方法能给我带来什么样的道路?

谢谢,巴德。

您正在使用storage_path()生成URL,正如文档中所说的

返回存储目录的完全限定路径。

这意味着您可以返回存储的本地路径,即计算机上的文件夹,在您的示例中,该文件夹似乎是一台windows计算机,在所有路径中都使用反斜杠。如果你在基于unix的计算机上运行这个,你会收到一个由斜杠组成的路径。然而,在这种情况下,您似乎正在尝试创建一个URL来显示图像,这对您来说很有效,因为生成的URL指的是本地机器上的图像。但是,如果您尝试从计算机以外的任何计算机访问,这将不起作用。要为资产创建有效的URL,您需要使用asset帮助程序,该帮助程序将为您的资产生成有效的URL。

hmm访问时使用env APP_URL

<img src="{{ env('APP_URL').'/storage/'.$image}}">

您可以使用asset,这将使用请求的当前方案(HTTP或HTTPS)为资产生成URL

<img src="{{ asset('storage/' . $image) }}" />

最新更新