用于谷歌云存储的 Golang SDK : Multipart download

标签 go google-cloud-platform google-cloud-storage

使用 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/

相关文章:

go - 使用 vendor 目录中的本地依赖项时发生编译错误

python-3.x - 如何通过本地 Docker 容器中的 python 应用程序从云存储桶中读取文件

node.js - 如何部署具有本地 npm 依赖项的 GAE 服务?

python - 如何在 Python 3 上将文件上传到 Google Cloud Storage?

json - 如何解析golang中的json数组?

azure - 如何从Azure应用配置中读取值

android - 如何在 Crashlytics 中获取 golang 的 Stack-trace

google-cloud-platform - Cloud Spanner — `SHOW TABLES` 的等效语法?

google-app-engine - 使用运行 dev_appserver 的本地主机上的客户端库保存到 GCS 时出现 404 错误

python - 得到一个意外的关键字参数 'timeout'(Python 中的 google-cloud-storage)