我一直在尝试将新的Flysystem与Laravel 5集成在一起。我正在将“本地化”路径存储到数据库,并让Storage Facade来完成路径。例如我存储screenshots/1.jpg和使用
screenshots/1.jpg
Storage::disk('local')->get('screenshots/1.jpg')
要么
Storage::disk('s3')->get('screenshots/1.jpg')
我可以在不同的磁盘上检索相同的文件。
get 检索文件内容,但是我希望在这样的视图中使用它:
get
<img src="{{ Storage::path('screenshots/1.jpg') }}" />
但是路径,或者任何能够检索完整路径的东西都不可用(据我所知)。那么如何返回完整路径?或者,我想知道这是否是设计使然?如果是这样,为什么我不应该获得完整的路径?还是我完全以错误的方式来做这件事?
编辑:L5.2 +的解决方案
有一个更好,更直接的解决方案。
使用Storage::url($filename)得到给定文件的完整路径/ URL。请注意,您需要在中将设置S3为存储文件系统config/filesystems.php:'default' => 's3'
Storage::url($filename)
S3
config/filesystems.php
'default' => 's3'
当然,您也可以Storage::disk('s3')->url($filename)以相同的方式进行操作。
Storage::disk('s3')->url($filename)
如您所见,config/filesystems.php还有一个'cloud' => 's3'定义的参数,它指向Cloud文件系统。如果您想保留本地服务器中的存储文件夹,但在云使用中检索/存储一些文件,该文件Storage::cloud()也具有相同的文件系统方法,即Storage::cloud()->url($filename)。
'cloud' => 's3'
Storage::cloud()
Storage::cloud()->url($filename)
Laravel文档没有提到此方法,但是如果您想了解更多有关此方法的信息,可以在此处查看其源代码。