为什么blobstore上传代码有重定向url

Kat*_*lon 7 google-app-engine android blobstore google-cloud-endpoints

我想使用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());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Jer*_*sia 5

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

请参阅文档中的此参考,以了解您可以执行的操作:https: //developers.google.com/appengine/docs/java/images/overview

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

从文档:

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