使用 GoLang SDK 进行谷歌云存储。
找不到如何分块下载文件。
最佳答案
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
,您无需担心用于引用 block 下载的底层方法(尽管快速查看他们的源代码,它只是实现了 http.NewRequest
,它使用相同的逻辑执行您想要的操作。
它似乎没有从他们的示例中“分块”的原因是因为 ioutil.ReadAll
的使用,尽管它对于简单的用例非常有用,但提取了所有 Reader
将数据存入内存(这意味着它还必须等待数据可用)。
为了更好地理解如何分步处理Reader
,我建议看一下https://tour.golang.org/methods/21。浏览 io.Reader
以及如何更有效地使用它。
关于用于谷歌云存储的 Golang SDK : Multipart download,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54042838/