适用于谷歌云存储的Golang SDK:多部分下载



使用 GoLang SDK for google cloud storage。

找不到如何以块的形式下载文件。

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,您无需担心用于能够以块引用下载的底层方法(尽管快速查看其源代码,它只是实现http.NewRequest,它使用相同的逻辑执行您想要的操作)。

它似乎没有从他们的示例中"分块"的原因是因为使用了 ioutil.ReadAll ,虽然它非常适合简单的用例,但将所有Reader的数据提取到内存中(这意味着它还必须等待数据变得可用)。

为了更好地了解如何逐步处理Reader,我建议查看 https://tour.golang.org/methods/21 以浏览io.Reader以及如何更有效地使用它。

最新更新