php - 使用 GCP PHP 客户端库创建文件夹
问题描述
我通过 Google 提供的文档开始学习 Google Cloud Storage PHP Client Library。但以下问题尚不清楚。
- 如何在存储桶中创建文件夹?
- 如何在文件夹中创建文件夹?
- 如何列出文件夹中的所有文件?
我了解到文件夹只不过是名称末尾带有“/”的对象。我们也可以使用上传对象的$bucket->upload()
方法上传对象。此方法需要文件路径,因此创建文件夹很麻烦
解决方案
云存储桶中实际上并不存在文件夹。命名空间是扁平的。文件夹的印象由 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
请注意,命名空间中没有任何地方是对象名称(目录)MyDirectory
或MyDirectory/something
存储的。这只是从使用前缀和分隔符的对象名称派生而来。
上面的 URL 将列出前两个对象。第三个将被跳过。
API返回JSON数据,返回的数据有两种:
items
,它返回以 a 开头且前缀后prefix
不包含 a 的对象名称。delimiter
prefixes
,它返回被分隔符截断的对象名称 - 它提供了目录名称的等价物。
换句话说,目录及其内容的错觉只是 Google Cloud Storage API 执行的一种花哨的解析技巧。
推荐阅读
- java - 使用 Java8 流过滤列表并获取第一个元素
- css - Vue2:v-move 不适用于“离开”过渡
- typescript - 打字稿。导入“模块/子目录”npm 包时未找到环境声明
- angular - 带有路径的 NativeScript 图像不会加载,但 url 工作正常
- excel - 希望获得有关在 MS-Excel 上使用代码和按钮的帮助和建议
- node.js - Angular 6 错误... calendar.component 没有导出的成员“CalendarComponent”
- c - 函数将多个值返回给主函数
- numpy - 相关 2D 矢量场
- string - 带三引号的字符串在带三引号的字符串内
- mysql - 使用当前日期 mysql 创建 CSV 文件