如何在 laravel 5 中使用 Storage 门面获取文件 URL?

新手上路,请多包涵

我一直在尝试使用新的 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 许可协议

阅读 1.2k
2 个回答

编辑: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 文档没有提到这个方法,但是如果你想了解更多,可以 在这里 查看它的源代码。

原文由 Pere Joan Martorell 发布,翻译遵循 CC BY-SA 3.0 许可协议

\(url = \)filename->getMedia(‘media_name’);

原文由 hamzaj595 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题