Laravel - Storage :: files($ user-> email)将不需要的正斜杠返回到文件夹

时间:2017-08-08 10:12:17

标签: php laravel laravel-storage

  • Laravel 5.4
  • X10P on Win10

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

我已将我的图片保存在以每个已连接用户的电子邮件命名的文件夹中:

$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:\xampp\htdocs\laraGo\storage\userEmail@mail.com/88bt97XslJMpre4dpJZO0ZRV9EV9GQbJw3FcQ4u8.png

第一个斜杠遵循storage_path()的斜线约定但我从控制器获取的内容:$userImages数组有不同的斜杠约定。

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

我也很高兴知道是否有办法知道哪种方法给我带来了哪种方式?

谢谢,Bud。

3 个答案:

答案 0 :(得分:0)

嗯,我在访问时使用了env APP_URL

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您正在使用storage_path()生成网址,正如documentation所说

  

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

这意味着您将返回存储的本地路径,即计算机上的文件夹,在您的示例中,该文件夹似乎是一台Windows计算机,它在所有路径中都使用反斜杠。如果你在基于unix的计算机上运行它,你将收到一个由正斜杠组成的路径。但是,在这种情况下,您似乎尝试创建一个显示图像的URL,这适用于您,因为生成的URL是指本地计算机上的图像。但是,如果您尝试从计算机以外的任何计算机访问,则无法使用此功能。要创建资产的有效网址,您需要使用asset帮助程序生成资产的有效网址。