【问题标题】:Google Storage JSON API missing folders itemGoogle Storage JSON API 缺少文件夹项
【发布时间】:2017-08-11 07:46:00
【问题描述】:

我正在使用 Google Storage JSON API 来获取包含存储桶中所有项目的 json,以在我的应用程序中创建树列表。 我的问题是这个 JSON 中缺少一些文件夹项。 这是文件夹项的输出:

{
        "kind": "storage#object",
        "id": "id",
        "selfLink": "selfLink",
        "name": "pdf/",
        "bucket": "bucket-name",
        "generation": "1461762807657000",
        "metageneration": "1",
        "contentType": "application/x-www-form-urlencoded;charset=UTF-8",
        "timeCreated": "2016-04-27T13:13:27.626Z",
        "updated": "2016-04-27T13:13:27.626Z",
        "storageClass": "STANDARD",
        "timeStorageClassUpdated": "2016-04-27T13:13:27.626Z",
        "size": "0",
        "md5Hash": "",
        "mediaLink": "link",
        "crc32c": "",
        "etag": ""
    }

这是 PDF 文件夹,但例如视频文件夹丢失,尽管此文件夹中的项目在 JSON 中可用。 我在此页面Google Storage Object List 中尝试 API 获得了相同的结果@

【问题讨论】:

  • 您的列表调用是否返回了pageToken

标签: json google-api google-cloud-platform google-cloud-storage


【解决方案1】:

Google Cloud Storage 有一个平面命名空间,因此“文件夹”实际上并不存在。相反,我们有一个带有“prefix”和“delimiter”选项的ListObject API,通过将“prefix”设置为您要列出的“文件夹”并将分隔符设置为“/”,可以非常低效地模拟层次结构。这导致该文件夹中的所有对象都在列表调用中返回,并且任何“文件夹”都作为 common_prefixes 返回。

不幸的是,这意味着您实际上无法在 Google 云存储中“创建”文件夹。文件夹只有在其中存在对象时才存在,因此当有人在 UI 中创建“文件夹”时,UI 会在文件夹中创建一个名为“”的零字节占位符对象,以使“文件夹”存在。

如果有人上传了一个文件,该文件的名称将其放入文件夹中,而没有先通过 UI 创建该文件夹,则永远不会创建此占位符对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多