我一直在尝试使用新的 Flysystem 与 Laravel 5 的集成。我将“本地化”路径存储到数据库,并让 Storage 门面完成路径。例如我存储 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') }}" />
但是路径或任何能够检索完整路径的东西都不可用(据我所知)。那么如何返回完整路径?或者,我想知道这是否是设计使然?如果是这样,为什么我不应该能够获得完整的路径?或者,我是不是完全走错了路?
原文由 daviestar 发布,翻译遵循 CC BY-SA 4.0 许可协议
编辑:L5.2+ 的解决方案
有一个更好,更直接的解决方案。
使用
Storage::url($filename)
获取给定文件的完整路径/URL。请注意,您需要将 — 设置为S3
中的存储文件系统:config/filesystems.php
'default' => 's3'
当然你也可以用同样的方法做
Storage::disk('s3')->url($filename)
。正如您在
config/filesystems.php
中看到的那样,还定义了一个参数'cloud' => 's3'
指的是云文件系统。如果您想在本地服务器中维护存储文件夹但在云中检索/存储一些文件,请使用Storage::cloud()
,它也具有相同的文件系统方法,即Storage::cloud()->url($filename)
。Laravel 文档没有提到这个方法,但是如果你想了解更多,可以 在这里 查看它的源代码。