使用GoLang SDK进行Google云存储。
找不到如何分块下载文件。
答案 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
,以及如何更有效地使用它。