【问题标题】:Creating folders using GCP PHP Client Libraries使用 GCP PHP 客户端库创建文件夹
【发布时间】:2021-06-07 13:24:40
【问题描述】:

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

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

我了解到文件夹只不过是名称末尾带有“/”的对象。我们也可以使用$bucket->upload() 方法上传对象来上传对象。此方法需要文件路径,所以创建文件夹很麻烦

【问题讨论】:

  • 云存储桶中实际上并不存在文件夹。命名空间是扁平的。文件夹的印象由 Google Cloud Console 和其他工具模拟。文件/MyFolder/test.txt/YourFolder/test.txt 位于存储桶(根级别)中的同一级别(同一目录) - 我忽略了对象名称哈希。工具使用/ 字符作为分隔符来模拟文件夹。 cloud.google.com/storage/docs/gsutil/addlhelp/…
  • @JohnHanley 请将您的评论移至答案:D
  • @J.A.Hernández - 谢谢,已完成。
  • 您的问题仍未解决。你的问题解决了吗?
  • @JohnHanley 是的,我把它整理出来了。

标签: php google-cloud-platform


【解决方案1】:

文件夹实际上并不存在于 Cloud Storage Bucket 中。命名空间是扁平的。文件夹的印象由 Google Cloud Console 和其他工具模拟。文件/MyFolder/test.txt/YourFolder/test.txt 位于存储桶(根级别)中的同一级别(同一目录) - 我忽略了对象名称哈希。工具使用/ 字符作为分隔符(定界符)来模拟文件夹。

How Subdirectories Work

在使用 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

请注意,命名空间中没有存储对象名称(目录)MyDirectoryMyDirectory/something。这只是使用前缀和分隔符从对象名称派生而来。

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

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

  1. items,返回以prefix开头且前缀后不包含delimiter的对象名称。
  2. prefixes,返回被分隔符截断的对象名称 - 提供目录名称的等效项。

换句话说,目录及其内容的错觉只是 Google Cloud Storage API 执行的一种花哨的解析技巧。

【讨论】:

    【解决方案2】:

    问题1的答案:只能通过云控制台创建空文件夹。您无法通过 SDK 函数在 GCP 存储桶中创建空文件夹。假设如果你想在bucket中创建/test文件夹,上传一个名为/test/file.txt的文件。确保您稍后在该/test 文件夹中上传的文件不是file.txt

    问题2的答案:除了路径之外几乎与第一个问题相同

    问题 3 的答案:可以使用 GCP SDK 提供的分隔符、前缀等额外参数来列出特定目录中的项目。

    【讨论】:

    • 技术上这是可以的。但是,某些备份程序会中断,因为它们不希望有一个具有相同名称作为前缀的对象。有一些商业软件包使用这种技术来模拟文件夹。不同之处在于它们还包含元数据,指示该对象是一个伪文件夹,其中包含有关文件、组、其他、权限等的附加信息。这种技术是供应商独有的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多