【问题标题】:Google Cloud Storage Search Files谷歌云存储搜索文件
【发布时间】:2019-01-10 19:52:23
【问题描述】:

我正在开发一个可以处理大量文件的应用程序。假设它是一家汽车公司。每辆车都有一个文件夹,其中包含该车的文档/文件。这些文件被上传到类别中,在 GStorage 中表示为“文件夹”。 2 辆不同汽车的 2 个文件可能如下所示:

car1/receipt/2016-02-02_payment.pdf
car1/pictures/tires.png

car2/receipt/2016-01-02_payment.pdf

假设我想列出我的应用程序中的所有收据。我该怎么做?由于 Google Cloud Storage 中的搜索功能非常有限,我目前提出的解决方案是拥有一个包含所有文件的镜像数据库表,当我想访问这些文件时,我会为用户生成 URL。如果 GStorage 有一种搜索 */ 文件的方法,那就太好了。

【问题讨论】:

    标签: file search storage google-cloud-storage


    【解决方案1】:

    在您的示例中,您可以使用带有gsutil 的通配符来列出您的存储桶内容:

    gsutil ls gs://your-bucket/car*/receipt

    【讨论】:

    • 这可以使用 PHP 吗?我需要把它带到网络前端
    • 您可以使用前缀列表和分隔符进行 API 调用(“/”是默认值)。您必须实现类似于 gsutil 的匹配逻辑才能产生所需的结果。首先,列出以“car”开头的前缀,然后对结果进行单独的列表调用,用前缀“receipt”扩展它们。
    • 我如何只获取前缀?每次我使用分隔符时,它都会列出大量不相关的文件。非常感谢您抽出宝贵时间!
    • 您可以使用 'fields' 参数过滤掉对象名称(参见github.com/GoogleCloudPlatform/google-cloud-php/blob/master/src/…)。删除“项目/名称”并在您的第一个列表调用中仅包含“前缀”和“页面令牌”字段。
    • 你是天使,那我只需要为每个前缀分别调用。虽然如果我没记错的话,我应该可以进行批处理,但也许那只是使用 gsutil。对每个前缀单独调用可能会占用大量时间。我要睡一会儿,明天必须调查一下你的答案:)如果你知道什么,请随时发表另一条评论!
    【解决方案2】:

    gsutil 支持 * 和 ?通配符仅适用于文件。要在通配符目标中包含文件夹,您需要将 * 或 ?符号。例如, gsutil ls gs:///**.txt 将列出所有子目录中的所有文本文件。通配符页面提供了更多详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-10
      • 2018-01-18
      • 2016-10-12
      • 1970-01-01
      • 2017-05-24
      • 2019-02-16
      • 2014-07-20
      相关资源
      最近更新 更多