【问题标题】:How to get the direct url of a binary file in the Google Blobstore?如何在 Google Blobstore 中获取二进制文件的直接 url?
【发布时间】:2012-04-06 23:20:47
【问题描述】:

我的应用程序生成二进制数据(压缩的 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

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

【问题讨论】:

    标签: java google-app-engine blobstore


    【解决方案1】:

    您可以将 Google Cloud Storage 用于您的文件。

    然后,您可以为您的文件提供一个公共云存储 URL,让您的客户无需通过 AppEngine 即可下载该文件。您还可以使用很多不同的 ACL 方案来收紧访问权限,这些都在文档中。

    Using Google Cloud Storage with the Files API.

    Cloud Storage Docs.

    【讨论】:

    • 请注意,Google Cloud 存储空间为 0.12 美元/GB,而 Blobstore 为 0.13 美元/GB/月。见developers.google.com/appengine/docs/billing
    • 这并不能真正回答问题,除了切线。
    • 这正是我想要的。它甚至比 0.125 美元/GB 的 Amazon S3 还要便宜,并且目前有免费试用版。谢谢。
    【解决方案2】:

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

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

    【讨论】:

    • 我明白了,所以如果 ImagesService 使用 Datastore,那么它仍然会向您收取访问费用,并且可能还会收取其自身服务的 CPU 时间? Google Cloud Storage 一定是我真正想要的。
    猜你喜欢
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多