我的应用程序生成二进制数据(压缩的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是什么?
答案 0 :(得分:4)
您可以将Google云端存储用于您的文件。
然后,您可以为您的文件提供公共云存储URL,以便客户端无需通过AppEngine即可下载。您可以使用很多不同的ACL场景来加强访问权限,它位于文档中。
答案 1 :(得分:2)
根据文档,blobstore中没有对象的公共URL。您只能通过应用中的Blobstore API访问它。因此,如果您希望每个blobstore对象都有一个URL,那么您必须为它创建自己的处理程序,当然这必须通过AppEngine和您的Java servlet。
我认为ImagesService#getServingUrl
不会为blobstore中的图像生成公共URL。该URL并不真正直接指向您的blobstore数据。它指向一个能够访问您的blobstore的图像服务,并通过自己的高性能基础架构为您提供图像。