使用 GoLang SDK for google cloud storage。
找不到如何以块的形式下载文件。
文档说要从 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
,您无需担心用于能够以块引用下载的底层方法(尽管快速查看其源代码,它只是实现http.NewRequest
,它使用相同的逻辑执行您想要的操作)。
它似乎没有从他们的示例中"分块"的原因是因为使用了 ioutil.ReadAll
,虽然它非常适合简单的用例,但将所有Reader
的数据提取到内存中(这意味着它还必须等待数据变得可用)。
为了更好地了解如何逐步处理Reader
,我建议查看 https://tour.golang.org/methods/21 以浏览io.Reader
以及如何更有效地使用它。