如何解决使用GCP PHP客户端库创建文件夹
我开始通过Google提供的文档学习Google Cloud Storage PHP客户端库。但是以下问题尚未解决。
- 如何在存储桶中创建文件夹?
- 如何在文件夹中创建文件夹?
- 如何列出文件夹中的所有文件?
我了解到文件夹不过是对象名称末尾带有“ /”的对象。我们也可以使用$bucket->upload()
方法上传对象来上传对象。此方法需要文件路径,因此在创建文件夹时会遇到麻烦
解决方法
文件夹实际上不在云存储桶中。命名空间是扁平的。文件夹的印象是由Google Cloud Console和其他工具模拟的。文件/MyFolder/test.txt
和/YourFolder/test.txt
在存储桶中(在根级别)处于同一级别(同一目录)-我忽略了对象名称哈希。工具使用/
字符作为分隔符(分隔符)来模拟文件夹。
使用Google Cloud Storage REST API时,使用delimeter=/
列出目录,并指定目录名称的前缀,例如:
https://www.googleapis.com/storage/v1/b/MYBUCKETNAME/o?prefix=MyDirectory/?delimiter=/
此URL通知REST API,您要列出以MyDirectory/
开头的对象名称,该对象名称破坏了在下一个定界符之后继续的对象名称,例如:
MyDirectory/file1.txt
MyDirectory/file2.txt
MyDirectory/something/file3.txt
请注意,名称空间中MyDirectory
或MyDirectory/something
的对象名称(目录)中没有存储。那只是从使用前缀和定界符的对象名称得出的。
上面的URL将列出前两个对象。第三个将被跳过。
API返回JSON数据,并且返回两种类型的数据:
-
items
,该对象返回以prefix
开头且在前缀之后不包含delimiter
的对象名称。 -
prefixes
,它返回由定界符截断的对象名称-它提供等效的目录名称。
换句话说,目录及其内容的错觉只是Google Cloud Storage API执行的一种精美的解析技巧。
,问题 1 的答案:只能通过云控制台创建空文件夹。您无法通过 SDK 功能在 GCP 存储桶中创建空文件夹。假设您要在存储桶中创建 /test
文件夹,请上传名为 /test/file.txt
的文件。确保您稍后在该 /test
文件夹中上传的文件不是 file.txt
问题 2 的答案:除了路径外几乎与第一个问题相同
问题 3 的答案:可以使用 GCP SDK 提供的分隔符、前缀等额外参数来列出特定目录中的项目。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。