7

我想象一下,使用blobstore存儲圖像的過程最終會將blob密鑰保存在數據存儲中。 因此,在下面的代碼中,這應該是在我的後端,爲什麼我需要重定向URL,因爲我已經有blob密鑰? 爲什麼我不只是將blob密鑰保存在我的數據存儲中然後返回?爲什麼blobstore上傳代碼有重定向url

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

+2

您確實想要將blob密鑰保存到數據存儲區。演示只是將客戶端瀏覽器發送到上傳文件的視圖以供演示。你不需要複製它。 – dragonx 2013-04-27 20:20:00

+2

@dragonx,也許你是這份工作的人。如果具有適當知識的人一次又一次地將這些關於blobstore-android-endpoint的問題放在休息處,那將會很好。 – kasavbere 2013-04-27 20:24:30

回答

5

由於谷歌存儲在一個不同的服務的圖像(使用Picassa中也一樣)。 目標是優化存儲併爲開發人員提供一些工具來輕鬆操縱這些圖像。

參見文檔在此引用,看看你能做些什麼: https://developers.google.com/appengine/docs/java/images/overview

爲了避免重定向,你應該使用這個方法來提供圖片: getServingUrl()

從文檔:

getServingUrl()方法允許您生成一個穩定的,專用的 URL,以提供適合網頁的圖像縮略圖。您只需將原始圖像的 單一副本存儲在Blobstore中,然後請求一個 高性能的每個圖像URL。這個特殊的URL可以自動調整大小和/或裁剪 的圖像,並且從這個URL提供的服務不會產生任何CPU或動態服務負載(雖然 帶寬仍然照常充電)。通過高度優化的無cookie基礎設施,圖像的延遲時間較短。

相關問題