用于Google云存储的Golang SDK:分段下载

时间:2019-01-04 16:34:46

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

使用GoLang SDK进行Google云存储。

找不到如何分块下载文件。

1 个答案:

答案 0 :(得分:2)

Google Cloud文档说要从Cloud Storage下载对象,您应使用以下内容:

rc, err := client.Bucket(bucket).Object(object).NewReader(ctx)
if err != nil {
        return nil, err
}
defer rc.Close()

data, err := ioutil.ReadAll(rc)
if err != nil {
        return nil, err
}
return data, nil

来源:https://cloud.google.com/storage/docs/downloading-objects#storage-download-object-code_sample

鉴于他们的SDK返回了io.Reader,您不必担心底层方法可用来批量引用下载内容(尽管快速浏览其源代码,它只是实现了{{ 1}},它使用相同的逻辑执行您想要的操作。

它似乎没有从示例中“分块”的原因是因为使用了http.NewRequest,尽管它对于简单的用例来说非常有用,但是却将所有ioutil.ReadAll的数据提取到了内存中(这意味着它还必须等待数据可用)。

为了更好地理解如何分步处理Reader,建议您参考https://tour.golang.org/methods/21浏览Reader,以及如何更有效地使用它。