如何在Google Blobstore中获取二进制文件的直接URL?

时间:2012-04-06 23:20:48

标签: java google-app-engine blobstore

我的应用程序生成二进制数据(压缩的xml)并将其保存到Google App Engine Blobstore。我想返回一个公共URL,客户端可以使用它来从任何地方访问这个二进制文件,而无需通过AppEngine和我的Java servlet。我知道使用ImagesService#getServingUrl获取图像的这种URL是可能的,但是对于其他类型的文件呢?

我像这样创建我的文件:

FileService#createNewBlobFile("application/octet-stream", "myfile.bin");

当我调用AppEngineFile#getFullPath()时,我会得到类似的内容:

/blobstore/writable:a2c0noo4_LNQ0mS6wFdCMA

我可以在我的dev文件系统中看到使用不同随机名称创建的文件。它的URL是什么?

2 个答案:

答案 0 :(得分:4)

您可以将Google云端存储用于您的文件。

然后,您可以为您的文件提供公共云存储URL,以便客户端无需通过AppEngine即可下载。您可以使用很多不同的ACL场景来加强访问权限,它位于文档中。

Using Google Cloud Storage with the Files API.

Cloud Storage Docs.

答案 1 :(得分:2)

根据文档,blobstore中没有对象的公共URL。您只能通过应用中的Blobstore API访问它。因此,如果您希望每个blobstore对象都有一个URL,那么您必须为它创建自己的处理程序,当然这必须通过AppEngine和您的Java servlet。

我认为ImagesService#getServingUrl不会为blobstore中的图像生成公共URL。该URL并不真正直接指向您的blobstore数据。它指向一个能够访问您的blobstore的图像服务,并通过自己的高性能基础架构为您提供图像。