[英]Creating folders using GCP PHP Client Libraries
我通过 Google 提供的文档开始学习 Google Cloud Storage PHP 客户端库。 但以下问题尚不清楚。
我了解到文件夹只不过是名称末尾带有“/”的对象。 我们也可以使用$bucket->upload()
方法上传 object 来上传 object。 此方法需要文件路径,因此创建文件夹很麻烦
云存储桶中实际上并不存在文件夹。 命名空间是扁平的。 文件夹的印象由 Google Cloud Console 和其他工具模拟。 文件/MyFolder/test.txt
和/YourFolder/test.txt
位于存储桶(根级别)中的同一级别(同一目录) - 我忽略了 object 名称哈希。 工具使用/
字符作为分隔符(定界符)来模拟文件夹。
使用 Google Cloud Storage REST API 时,通过使用delimeter=/
并为目录名称指定前缀来列出目录,例如:
https://www.googleapis.com/storage/v1/b/MYBUCKETNAME/o?prefix=MyDirectory/?delimiter=/
This URL informs the REST API that you want to list the object names that start with MyDirectory/
breaking on object names that continue after the next delimiter, example:
MyDirectory/file1.txt
MyDirectory/file2.txt
MyDirectory/something/file3.txt
请注意,命名空间中没有 object 名称(目录) MyDirectory
或MyDirectory/something
存储的内容。 这只是从使用前缀和分隔符的 object 名称派生而来。
上面的 URL 会列出前两个对象。 第三个将被跳过。
API返回JSON数据,返回的数据有两种:
items
,返回以前缀开头且prefix
后不包含delimiter
的 object 名称。prefixes
,它返回被分隔符截断的 object 名称 - 它提供了目录名称的等价物。换句话说,目录及其内容的错觉只是谷歌云存储 API 执行的一个花哨的解析技巧。
问题 1 的答案:只能通过云控制台创建空文件夹。 您不能通过 SDK 函数在 GCP 存储桶中创建空文件夹。 假设如果您想在存储桶中创建/test
文件夹,请上传一个名为/test/file.txt
的文件。 确保您稍后在该/test
文件夹中上传的文件不是file.txt
对问题 2的回答:除了路径之外几乎与第一个问题相同
对问题 3 的回答:可以使用额外的参数(如 GCP SDK 提供的分隔符、前缀)来列出特定目录中的项目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.