如何使用Cloud Storage JSON API检索大小超过64KB的文件?

时间:2013-01-24 19:51:17

标签: python google-app-engine google-cloud-storage google-api-python-client

我需要检索Web应用程序中大小超过64KB的文件。目前,在JSON API的v1beta1中,Google仅允许通过其JSON API上传/下载64KB大小。我已经想出如何使用“可恢复”上传(不是通过其JSON API中提供的接口v1beta1,而是手动)上传大小超过64KB的文件。

我无法弄清楚是一种很好的下载方式。现在,我为要下载的对象公开ACL,下载文件,然后删除对象上的公共ACL。这不仅效率低,而且不是很干净。有没有更好的方法可以使用,或者我坚持到谷歌在未来的API版本中提供更好的方法?

背景资料 我正在编写一个GAE应用程序,我知道google.appengine.api.files接口。不幸的是,在使用本地开发环境时,这不适用于实时存储桶,出于测试目的,我和我的团队需要一种在本地测试开发的方法(在其他限制/安全因素中部署到GAE过于繁琐)。我们可以与除Cloud Storage之外的所有其他API进行交互,因此我正在编写一个类,在从云存储读取/写入/删除时将使用JSON API或AppEngine的文件界面。我有一个有效的实现,但我对我检索文件的方式不满意。

从下面的评论中澄清: 我们正在下载大量信息,对其进行按摩,并将其存储到云存储中以供消费用于BigQuery。我们需要使用dev环境中的实时存储桶,因为如果不这样做,BigQuery将无法使用我们想要测试的数据。无需提供这些文件,只需处理它们

对已接受答案的评论解决方案: 我能够从与JSON API交互的代码中重用经过身份验证的httplib2对象,以针对https://{bucket_name}.storage.googleapis.com/{object_name} URL端点执行经过身份验证的GET请求,仅添加Content-Length: 0和{{1标头。

1 个答案:

答案 0 :(得分:1)

对于下载,XML API是进行身份验证下载的最简单方法。有多种方法可以进行经过身份验证的下载,详情请见此页:https://developers.google.com/storage/docs/authentication

对于简单的提取操作,名称“XML API”可能被认为是误导性的 - 您不需要生成任何XML。如果遇到错误,它将表示为XML,但在最简单的成功下载文件的情况下,实际上不涉及XML。