繁体   English   中英

使用 GCP PHP 客户端库创建文件夹

[英]Creating folders using GCP PHP Client Libraries

我通过 Google 提供的文档开始学习 Google Cloud Storage PHP 客户端库。 但以下问题尚不清楚。

  1. 如何在存储桶中创建文件夹?
  2. 如何在文件夹中创建文件夹?
  3. 如何列出文件夹中的所有文件?

我了解到文件夹只不过是名称末尾带有“/”的对象。 我们也可以使用$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 名称(目录) MyDirectoryMyDirectory/something存储的内容。 这只是从使用前缀和分隔符的 object 名称派生而来。

上面的 URL 会列出前两个对象。 第三个将被跳过。

API返回JSON数据,返回的数据有两种:

  1. items ,返回以前缀开头且prefix后不包含delimiter的 object 名称。
  2. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM