- 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) }}" />