Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Google Blobstore中获取二进制文件的直接url?_Java_Google App Engine_Blobstore - Fatal编程技术网

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

Java 如何在Google Blobstore中获取二进制文件的直接url?,java,google-app-engine,blobstore,Java,Google App Engine,Blobstore,我的应用程序生成二进制数据(压缩xml)并将其保存到Google应用程序引擎Blobstore。我想返回一个公共URL,客户端可以使用它从任何地方访问这个二进制文件,而无需通过AppEngine和我的Java servlet。我知道可以通过使用获取图像的此类URL,但是对于其他类型的文件呢 我创建的文件如下所示: FileService#createNewBlobFile("application/octet-stream", "myfile.bin"); 当我调用AppEngineFile#

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

我创建的文件如下所示:

FileService#createNewBlobFile("application/octet-stream", "myfile.bin");
当我调用AppEngineFile#getFullPath()时,我得到如下结果:

/blobstore/writable:a2c0noo4_LNQ0mS6wFdCMA

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

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


我认为
ImagesService#getServingUrl
没有为blobstore中的图像生成公共URL。该URL实际上并不直接指向blobstore数据。它指向一个能够访问blobstore的图像服务,并通过其自身的高性能基础设施为您提供图像服务。

您可以将谷歌云存储用于您的文件

然后,您可以为您的文件提供一个公共云存储URL,该URL将允许您的客户端在不通过AppEngine的情况下下载该文件。有很多不同的ACL场景,你可以使用它们来收紧访问权限,它们都在文档中


请注意,谷歌云存储是$0.12/GB,而Blobstore是$0.13/GB/月。看,这并没有真正回答这个问题,除了切点。这正是我想要的。它甚至比AmazonS3更便宜,后者的价格为0.125美元/GB,目前还提供免费试用。谢谢。我明白了,所以如果ImagesService使用数据存储,那么它仍然会对您的访问收费,可能还会对其自身服务的CPU时间收费?谷歌云存储一定是我真正想要的。