获取存储文件的路径

时间:2017-05-14 21:46:41

标签: laravel laravel-5 laravel-5.3

我使用以下方法将文件保存到存储空间:

$request->file('avatar')->store('avatars');

将其保存到:

storage/app/avatars/avatar.png

如何获取此文件/文件夹的路径( URL)?使用Laravel's Filesystem执行此操作的正确方法是什么?

3 个答案:

答案 0 :(得分:1)

没有正确的方法可以做到这一点;因为不应该这样做。存储是一个与不同存储系统通信的不透明系统;因此没有api来获取支持文件路径。例如,这不适用于Amazon S3。您的应用程序知道的唯一路径是您发送到存储外观以使用该文件的字符串,无法保证在存储系统存储文件时此字符串用于生成文件名。

您可以使用一些适用于本地磁盘的黑客,但这些黑客通常不适用于存储系统。使用这些解决方案意味着您将自己限制为仅使用本地磁盘;当您需要向外扩展并添加另一台服务器时,这会给您带来麻烦。然后,您将拥有两台具有两个独立本地磁盘的服务器,这些磁盘具有单独的内

使用适用于所有配置的文件的正确方法是获取文件内容(Storage::get),进行修改(包括将它们存储在临时文件中),然后回写新文件内容(Storage::set)。

如果您确定只使用本地文件系统,请使用File facade而不是存储外观。我无法找到任何文档,只有它暴露的界面。

参考:https://github.com/laravel/framework/issues/13610

答案 1 :(得分:1)

你只能从laravel函数获取存储文件夹路径,你可以在它之后给出嵌套文件夹名称,它也会绑定基本URL

storage_path(folder1/folder2/.../file.png);

答案 2 :(得分:0)

试试这个

storage_path('应用程序/化身/ avatar.png&#39);