使用 gcloud-python 在 Google Cloud Storage 中设置元数据

Posted

技术标签:

【中文标题】使用 gcloud-python 在 Google Cloud Storage 中设置元数据【英文标题】:Set metadata in Google Cloud Storage using gcloud-python 【发布时间】:2015-10-15 09:40:01 【问题描述】:

我正在尝试使用 gcloud-python 将文件上传到 Google Cloud Storage 并设置一些自定义元数据属性。为了尝试这个,我创建了一个简单的脚本。

import os

from gcloud import storage

client = storage.Client('super secret app id')
bucket = client.get_bucket('super secret bucket name')

blob = bucket.get_blob('kirby.png')
blob.metadata = blob.metadata or 
blob.metadata['Color'] = 'Pink'
with open(os.path.expanduser('~/Pictures/kirby.png'), 'rb') as img_data:        
    blob.upload_from_file(img_data)

我可以上传文件内容。上传文件后,我可以从开发者控制台手动设置元数据并检索它。

我不知道如何以编程方式上传元数据。

【问题讨论】:

【参考方案1】:

我们在问题跟踪器上discussed,它在实现中出现了一个“错误”,或者至少是让用户措手不及的东西。

通过blob.metadata 访问metadata 是只读的。因此,当通过

改变该结果时
blob.metadata['Color'] = 'Pink'

它实际上并没有改变存储在blob 上的元数据。

目前的“修复”是建立起来

metadata = 'Color': 'Pink'
blob.metadata = metadata

【讨论】:

我正在尝试创建一个带有 Content-Disposition 元数据的 blob 并将其上传到附件。我尝试使用上面的代码传递它,但它似乎不起作用。非常感谢任何帮助。 设置元数据后,必须调用blob.patch()。那么这对我来说很好。 @JoeRivera 也许通过blob.content_disposition = 'form-data' 可以解决您的问题。通过直接针对blob 执行此操作,而不是使用元数据属性。【参考方案2】:
blob.content_disposition = "attachment"
blob.patch()

【讨论】:

以上是关于使用 gcloud-python 在 Google Cloud Storage 中设置元数据的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 gcloud-python 中保存嵌套实体?

尝试从 docker 容器访问时,数据存储返回 503

在google drive使用google.colab云服务

google play商店怎么使用

使用 Google Apps 脚本将文件上传到我的 google 驱动器(在 GOOGLE 中没有表格)

使用 Google 电子表格在 Google 查询语言 (GQL) 中按名称而不是字母选择列?