7

我想象使用 blobstore 存储图像的过程以将 blob 键保存在数据存储区中结束。所以在下面的代码中,它应该在我的后端,为什么我需要一个重定向 URL,因为我已经有了 blob 键?为什么我不只是将 blob 密钥保存在我的数据存储中然后返回它?

public class Upload extends HttpServlet {
    private BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();

    public void doPost(HttpServletRequest req, HttpServletResponse res)
        throws ServletException, IOException {

        Map<String, BlobKey> blobs = blobstoreService.getUploadedBlobs(req);
        BlobKey blobKey = blobs.get("myFile");

        if (blobKey == null) {
            res.sendRedirect("/");
        } else {
            res.sendRedirect("/serve?blob-key=" + blobKey.getKeyString());
        }
    }
}

此代码来自教程:https ://developers.google.com/appengine/docs/java/blobstore/overview#Complete_Sample_App

4

1 回答 1

5

因为 Google 将图像存储在不同的服务上(Picassa 也使用)。目标是优化存储并为开发人员提供一些工具来轻松操作这些图像。

请参阅文档中的此参考以了解您可以做什么: https ://developers.google.com/appengine/docs/java/images/overview

为避免重定向,您应该使用此方法来提供图像: getServingUrl()

从文档中:

getServingUrl() 方法允许您生成一个稳定的专用 URL,用于提供适合 Web 的图像缩略图。您只需将原始图像的单个副本存储在 Blobstore 中,然后请求高性能的每图像 URL。这个特殊的 URL 可以自动提供调整大小和/或裁剪的图像,并且从这个 URL 提供服务不会在您的应用程序上产生任何 CPU 或动态服务负载(尽管仍然照常收取带宽费用)。图像通过高度优化的无 cookie 基础设施以低延迟提供。

于 2013-04-27T20:46:22.943 回答