首页 > 解决方案 > 使用 GCP PHP 客户端库创建文件夹

问题描述

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

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

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

标签: phpgoogle-cloud-platform

解决方案


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

子目录如何工作

delimeter=/使用 Google Cloud Storage REST API 时,通过使用 a并为目录名称指定前缀来列出目录,例如:

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,它返回以 a 开头且前缀后prefix不包含 a 的对象名称。delimiter
  2. prefixes,它返回被分隔符截断的对象名称 - 它提供了目录名称的等价物。

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


推荐阅读