【问题标题】:Setting Custom metadata to an object in Google Cloud Storage将自定义元数据设置为 Google Cloud Storage 中的对象
【发布时间】:2020-04-24 21:25:36
【问题描述】:

我有一个 android 应用,可以将文件上传到 Firebase Storage 中的存储桶。当它这样做时,它会添加自定义元数据userId。 当我使用gsutil 使用docs 中的以下命令从我的计算机上传文件时:

gsutil -h x-goog-meta-userId:<userId> cp my_file gs://bucket/folder

它添加了元数据,但将大写 I 更改为一个小的 i

有什么办法让元数据保持大写吗?

我有一个函数依赖于查找元数据为userId,否则它返回null,我目前的解决方法是检查userIduserid。但是继续前进很高兴知道仅以小写字母设置元数据键是否更好。
这在从存储桶复制到存储桶时非常不方便,因为它会添加额外的自定义元数据而不是替换适当的元数据。

【问题讨论】:

  • 实际上我可以通过控制台添加custom key with an uppercase,但不使用该命令。我正在对此进行更多调查
  • @Chris32 我可以从 Android 应用程序中做到这一点,似乎 gsutil 可能有问题。在这里发布之前,我检查了他们的 GitHub,之前似乎有类似的问题#421,但它已在更新中修复。尽管在问题中 OP 使用的是setmeta.
  • 是的,过去有一个更新解决了这个问题,但现在又出现了。暂时没有更新。作为一种解决方法,如果需要自定义键区分大小写,您可以使用控制台手动添加。 Gsutil 保持值区分大小写,因此只有自定义键才需要。
  • 目前,我已经涵盖了,但我认为应该在 API 之间保持一致性。我花了一些时间来调试我的问题,因为除此之外我必须选择一个I 来大写:-D

标签: google-cloud-functions google-cloud-storage firebase-storage gsutil


【解决方案1】:

Google Cloud Storage 的 XML API uses HTTP headers 用于公开和设置自定义对象元数据。根据RFC 2616,HTTP 标头不区分大小写,因此虽然您可以使用其他 API 指定大小写,但我们通常不鼓励依赖它。

也就是说,我同意现有的 gsutil 行为可能是一个错误。

【讨论】:

    【解决方案2】:

    我不建议您在元数据(以及一般的标题)中使用大写字母。几个月前我收到了一封电子邮件,我在thread 中找到了一份副本

    Google 将所有标题转换为小写。因此,今天养成对所有 API 调用使用小写标头的习惯。

    【讨论】:

      猜你喜欢
      • 2019-08-22
      • 2022-11-11
      • 2020-09-26
      • 2019-08-15
      • 2014-12-05
      • 1970-01-01
      • 2019-03-12
      • 2021-01-05
      • 2015-11-08
      相关资源
      最近更新 更多