Python 如何使用云存储JSON API检索超过64KB的文件?

Python 如何使用云存储JSON API检索超过64KB的文件?,python,google-app-engine,google-cloud-storage,google-api-python-client,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的未来版本中提供更好的方法之前,我会一

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

我不知道下载的好方法是什么。现在,我为要下载的对象公开ACL,下载文件,然后删除对象上的公共ACL。这不仅效率低下,而且不太干净。有没有更好的方法可以使用,或者在谷歌在他们的API的未来版本中提供更好的方法之前,我会一直坚持下去

背景信息 我正在编写一个GAE应用程序,我知道google.appengine.api.files接口。不幸的是,在使用本地开发环境时,这在活动bucket上不起作用,出于测试目的,我的团队和我需要一种在本地测试开发的方法(除了其他限制/安全因素外,部署到GAE太麻烦)。我们可以与除云存储之外的所有其他API交互,因此我正在编写一个类,该类在从云存储读取/写入/删除时将使用JSON API或AppEngine的文件接口。我得到了一个有效的实现,但我对检索文件的方式不满意

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

以下接受答案评论中的解决方案:
我能够从与JSON API交互的代码中重用经过身份验证的
httplib2
对象,对
https://{bucket\u name}.storage.googleapis.com/{object\u name}
URL端点执行经过身份验证的GET请求,只添加
内容长度:0
x-goog-API-version:2

对于下载,XML API是进行身份验证下载的最简单方法。有多种方法可以进行身份验证下载,详见本页:


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

这个问题不清楚你是否在使用GAE?如果是这样的话,根据您的用例有一些替代方案。对不起,添加了一些背景信息您的用例是什么?您需要提供这些文件还是阅读并处理它们?另外,为什么您要从您的开发环境访问live Bucket?我们正在下载大量信息,对其进行处理,并将其存储到云存储中,以便在BigQuery中使用。我们需要使用开发环境中的活动存储桶,因为如果我们不这样做,BigQuery将无法使用我们想要测试的数据。不需要为这些文件提供服务,只需处理它们。我更喜欢使用JSON API。我使用它与许多其他Google API进行通信,因此许多代码已经编写好,并且可以轻松移植以与之交互。还有一个内置的库,可以在生产中向Google for me(AppAssertionCredentials)进行身份验证。创建和管理一种GAE友好的方式来与XMLAPI进行通信会有点麻烦,这很公平。让我做一点研究。理想情况下,我希望它能像驱动API一样工作。当我得到一个文件列表或一个特定文件时,我会得到DownloadURL/ExportLinks,我可以通过身份验证的get调用来下载资源。我已经有了oauth2令牌。。。也许我可以将该令牌与XMLAPI一起重用,并使用bucket/object信息ping网关以获取数据。。。。可能已经找到了我的答案:是的,这就是我的建议。如果您有一个oauth2令牌,您应该能够使用适当的oauth2头执行常规的旧GET。这就是我们所说的“XML API”,因为URL家族中的其他东西接受或返回XML。我担心我必须开始生成/使用XML,所以我没有仔细查看API,我表示歉意。我能够从与JSON API交互的代码中重用经过身份验证的
httplib2
对象,对
https://{bucket\u name}.storage.googleapis.com/{object\u name}
URL端点执行经过身份验证的GET请求,只添加
内容长度:0
x-goog-API-version:2
头。非常感谢:)!