如何通过Cloud Storage JSON API 获取超过64KB的文件?
我需要在我的网页应用中获取大于64KB的文件。目前,在JSON API的v1beta1版本中,谷歌只允许通过他们的JSON API上传和下载64KB大小的文件。我已经找到了一个方法,可以使用“可恢复上传”来上传超过64KB的文件(不是通过v1beta1提供的接口,而是手动进行的)。
我现在遇到的问题是,下载文件的好方法还没找到。目前,我把想下载的对象的访问权限设置为公开,然后下载文件,最后再把这个对象的公开权限去掉。这种方法不仅效率低,而且不太干净。有没有更好的方法可以使用,还是说我得等谷歌在未来的API版本中提供更好的手段?
背景信息:我正在写一个GAE应用程序,我知道有google.appengine.api.files这个接口。不幸的是,这个接口在使用本地开发环境时无法在实时存储桶上工作。为了测试,我和我的团队需要一种在本地测试开发的方法(因为部署到GAE太麻烦,还有其他限制和安全因素)。我们可以与所有其他API交互,除了云存储,所以我正在写一个类,用来在从云存储读取、写入和删除时使用JSON API或AppEngine的文件接口。我已经有了一个可用的实现,但对我获取文件的方式不太满意。
下面评论的澄清:我们正在下载大量信息,处理这些信息,然后存储到云存储中,以便在BigQuery中使用。我们需要从开发环境使用实时存储桶,因为如果不这样做,BigQuery将无法处理我们想要测试的数据。我们不需要提供这些文件,只需要处理它们。
下面接受答案评论中的解决方案:我能够重用我与JSON API交互的经过身份验证的httplib2
对象,来对https://{bucket_name}.storage.googleapis.com/{object_name}
这个URL端点进行经过身份验证的GET请求,只需添加Content-Length: 0
和x-goog-api-version: 2
这两个头信息。
1 个回答
对于下载来说,XML API 是进行认证下载的最简单方法。其实有很多种方式可以进行认证下载,具体的内容可以在这个页面找到:https://developers.google.com/storage/docs/authentication
说到简单的获取操作,"XML API" 这个名字可能会让人误解——你并不需要生成任何 XML 文件。如果你遇到错误,错误信息会以 XML 的形式呈现,但在最简单的成功下载文件的情况下,实际上并不涉及任何 XML。