一尘不染

如何在Laravel 5中使用Storage Facade获取文件路径?

php

我一直在尝试将新的Flysystem与Laravel 5集成在一起。我正在将“本地化”路径存储到数据库,并让Storage
Facade来完成路径。例如我存储screenshots/1.jpg和使用

Storage::disk('local')->get('screenshots/1.jpg')

要么

Storage::disk('s3')->get('screenshots/1.jpg')

我可以在不同的磁盘上检索相同的文件。

get 检索文件内容,但是我希望在这样的视图中使用它:

<img src="{{ Storage::path('screenshots/1.jpg') }}" />

但是路径,或者任何能够检索完整路径的东西都不可用(据我所知)。那么如何返回完整路径?或者,我想知道这是否是设计使然?如果是这样,为什么我不应该获得完整的路径?还是我完全以错误的方式来做这件事?


阅读 1292

收藏
2020-05-29

共1个答案

一尘不染

编辑:L5.2 +的解决方案

有一个更好,更直接的解决方案。

使用Storage::url($filename)得到给定文件的完整路径/
URL。请注意,您需要在中将设置S3为存储文件系统config/filesystems.php'default' => 's3'

当然,您也可以Storage::disk('s3')->url($filename)以相同的方式进行操作。

如您所见,config/filesystems.php还有一个'cloud' => 's3'定义的参数,它指向Cloud文件系统。如果您想保留本地服务器中的存储文件夹,但在云使用中检索/存储一些文件,该文件Storage::cloud()也具有相同的文件系统方法,即Storage::cloud()->url($filename)

Laravel文档没有提到此方法,但是如果您想了解更多有关此方法的信息,可以在此处查看其源代码。

2020-05-29