获取存储中文件的路径
Get path to file in storage
我使用以下方法将文件保存到存储:
$request->file('avatar')->store('avatars');
保存到:
storage/app/avatars/avatar.png
如何获取此 file/folder 的路径( 而不是 URL)?使用 Laravel's Filesystem 执行此操作的正确方法是什么?
试试这个
storage_path('app/avatars/avatar.png');
没有正确的方法来做到这一点;因为不应该这样做。 Storage 是一个不透明的系统,可以与不同的存储系统对话;因此没有 api 来获取支持文件路径。例如,这不适用于 Amazon S3。您的应用程序知道的唯一路径是您发送到存储外观以处理文件的字符串,不能保证存储系统存储文件时会使用此字符串生成文件名。
您可以使用一些适用于本地磁盘的技巧,但这些技巧通常不适用于存储系统。使用这些解决方案意味着您将限制自己只能使用本地磁盘;当您需要扩展并添加另一台服务器时,这会给您带来麻烦。然后,您将拥有两台服务器和两个独立的本地磁盘,具有不同的内容。
使用文件的正确方法(适用于所有配置)是获取文件内容 (Storage::get
),进行修改(包括将它们存储在临时文件中)然后写入返回新文件内容 (Storage::set
).
如果您真的确定只会使用本地文件系统,请使用 File facade 而不是 Storage facade。我找不到这方面的任何文档,只能找到它公开的接口。
你只能通过laravel函数获取存储文件夹路径,你可以在它后面给出嵌套文件夹名称,它也会绑定基础url
storage_path(folder1/folder2/.../file.png);
我使用以下方法将文件保存到存储:
$request->file('avatar')->store('avatars');
保存到:
storage/app/avatars/avatar.png
如何获取此 file/folder 的路径( 而不是 URL)?使用 Laravel's Filesystem 执行此操作的正确方法是什么?
试试这个
storage_path('app/avatars/avatar.png');
没有正确的方法来做到这一点;因为不应该这样做。 Storage 是一个不透明的系统,可以与不同的存储系统对话;因此没有 api 来获取支持文件路径。例如,这不适用于 Amazon S3。您的应用程序知道的唯一路径是您发送到存储外观以处理文件的字符串,不能保证存储系统存储文件时会使用此字符串生成文件名。
您可以使用一些适用于本地磁盘的技巧,但这些技巧通常不适用于存储系统。使用这些解决方案意味着您将限制自己只能使用本地磁盘;当您需要扩展并添加另一台服务器时,这会给您带来麻烦。然后,您将拥有两台服务器和两个独立的本地磁盘,具有不同的内容。
使用文件的正确方法(适用于所有配置)是获取文件内容 (Storage::get
),进行修改(包括将它们存储在临时文件中)然后写入返回新文件内容 (Storage::set
).
如果您真的确定只会使用本地文件系统,请使用 File facade 而不是 Storage facade。我找不到这方面的任何文档,只能找到它公开的接口。
你只能通过laravel函数获取存储文件夹路径,你可以在它后面给出嵌套文件夹名称,它也会绑定基础url
storage_path(folder1/folder2/.../file.png);