使用google进行GoLang云存储。
无法找到如何在块中下载文件。
发布于 2019-01-05 00:44:57
Google文档说要从Cloud下载一个对象,您应该使用以下方法:
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来源:sample
考虑到他们的SDK返回一个io.Reader,您不需要担心底层方法被用来以块的形式引用下载(尽管快速查看它们的源代码,它只是实现了http.NewRequest,它使用相同的逻辑实现了您想做的事情)。
从他们的示例中似乎没有“分块”的原因是ioutil.ReadAll的使用,虽然它对简单用例很好,但它将所有Reader数据提取到内存中(这意味着它还必须等待数据变得可用)。
为了更好地理解如何分步骤处理Reader,我建议您浏览一下https://tour.golang.org/methods/21,了解一下io.Reader,以及如何更有效地使用它。
https://stackoverflow.com/questions/54042838
复制相似问题