【问题标题】:Reading Response Headers from Google Cloud Storege API从 Google Cloud Storage API 读取响应标头
【发布时间】:2020-10-21 09:20:30
【问题描述】:

我正在使用以下代码从谷歌云存储下载图像。但我看不到 eTAG,响应的标题过期。当我在浏览器中使用图像 url 时,我可以看到这些标签。从谷歌云存储中获取数据时,有没有办法读取响应标头?

// Creates a client.
client, err := storage.NewClient(ctx)
if err != nil {
    log.Fatalf("Failed to create client: %v", err)
}

rc, err := client.Bucket("mybucket").Object(imageName).NewReader(ctx)
if err != nil {
    fmt.Println(err)

    return
}
defer rc.Close()

【问题讨论】:

  • 嗨@max 似乎获得etag 并不像我们想象的云存储那么简单。您似乎需要阅读元数据,然后在那里找到 etag 值。考虑到这一点,您能否尝试阅读文件的元数据 - 一个示例可用 here - 并检查 .Etag 是否可用?如果没有,请按照此代码here尝试一下,其中etag成功返回。
  • 谢谢@gso_gabriel,元数据有etag。我使用了您建议的链接cloud.google.com/storage/docs/…。只是我必须打两个电话,一个用于图像,另一个用于元数据。您可以将其作为此问题的答案而不是评论。将其标记为正确答案
  • 嗨@max 很高兴听到它对你有帮助!我已经发布了答案。

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


【解决方案1】:

似乎获得etag 并不像我们想象的云存储那么简单。为了能够获得etag,您需要先从对象中加载元数据,这样您就可以在那里找到etag。您可以使用此文档Viewing and editing object metadata,因此您可以获得有关如何返回图像的代码示例,然后是带有etag 的元数据。考虑到您需要做什么才能到达etag,请记住,您需要进行两次调用来实现它 - 一个用于图像,另一个用于元数据本身。

【讨论】:

    猜你喜欢
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 2018-06-19
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多