首页 > 解决方案 > 用于谷歌云存储的 Golang SDK:分段下载

问题描述

使用 GoLang SDK 进行谷歌云存储。

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

标签: gogoogle-cloud-platformgoogle-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,虽然对于简单的用例非常有用,但它会将所有Readers 数据提取到内存中(这意味着它还必须等待数据变得可用)。

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


推荐阅读