1
  • 拉拉维尔 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:\xampp\htdocs\laraGo\storage\userEmail@mail.com/88bt97XslJMpre4dpJZO0ZRV9EV9GQbJw3FcQ4u8.png

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

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

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

谢谢,巴德。

4

3 回答 3

1

如文档所述,您storage_path()用于生成URL

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

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

于 2017-08-08T10:45:04.977 回答
0

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

<img src="{{ asset('storage/' . $image) }}" />
于 2017-08-08T10:31:33.287 回答
0

嗯,我在访问时使用 env APP_URL

 <img src="{{ env('APP_URL').'/storage/'.$image}}">
于 2017-08-08T10:24:09.360 回答