GCS ResumableDownload 类

GCS ResumableDownload 类

我的业务应用程序需要从 GCS 存储桶下载文件。文件大小也可以以 GB 为单位。是否有类似 ResumableUpload 的下载类?我想使用 ResumableDownload,这样在下载文件时发生任何中断时,它可以开始下载文件的其余部分。

答案1

根据文档Google Cloud Storage,使用以下gsutil命令:

每当您使用 cp 命令上传大于 8 MiB 的对象时,gsutil 都会自动执行可恢复上传。您无需指定任何特殊的命令行选项即可实现此操作。[... . .] 同样,除非目标是流,否则每当您使用 cp 命令时,gsutil 都会自动执行可恢复下载(使用标准 HTTP Range GET 操作)。在这种情况下,部分下载的临时文件将显示在目标目录中。完成后,原始文件将被删除并用下载的内容覆盖。

您可能会发现此文档很有用编写生产转移脚本

答案2

GCS 下载方法(XML 和 JSON API 均适用)Range按照以下要求实现标头:RFC 7233 第 3 节

这意味着,如果您知道已下载了多少字节,则可以随时重新开始下载。

此外,您还可以部分下载文件。这样,您甚至可以分片下载,然后组成完整的文件。

一个例子:

BUCKET=<YOUR_BUCKET_ID>
echo "Hello World!">test.txt
gsutil cp test.txt gs://$BUCKET
curl https://www.googleapis.com/storage/v1/b/$BUCKET/o/test.txt?alt=media -H'Range: bytes=6-10' -H"Authorization: Bearer $(gcloud auth print-access-token)"

此示例应仅返回单词World


不确定如何在 c# 中实现这一点,如对另一个答案的评论中所述,但 GCS 确实支持部分下载。有关更侧重于编程的实现细节,我建议您在 StackOverflow 中提问。

相关内容