7

Immagino che il processo di utilizzo del blobstore per archiviare le immagini finisca con il salvataggio della chiave blob nel datastore. Quindi nel seguente codice, che dovrebbe essere nel mio back-end, perché ho bisogno di un URL di reindirizzamento poiché ho già la chiave blob? Perché non dovrei semplicemente salvare la chiave blob nel mio archivio dati e quindi restituirla?Perché il codice di caricamento blobstore ha l'URL di reindirizzamento

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()); 
     } 
    } 
} 

Questo codice è dal tutorial: https://developers.google.com/appengine/docs/java/blobstore/overview#Complete_Sample_App

+2

Si desidera salvare la chiave blob nel datastore. La demo invia semplicemente il browser client alla vista del file caricato per scopi dimostrativi. Non è necessario copiarlo. – dragonx

+2

@dragonx, forse tu sei la persona per il lavoro. Sarebbe bello se qualcuno con la conoscenza appropriata, una volta per tutte, mettesse a riposo queste domande su blobstore-android-endpoint. – kasavbere

risposta

5

Perché Google memorizzare le immagini su un servizio diverso (usato da Picassa pure). L'obiettivo è ottimizzare lo spazio di archiviazione e fornire allo sviluppatore alcuni strumenti per manipolare facilmente tali immagini.

Vedere questo riferimento nella documentazione per vedere che cosa si potrebbe fare: https://developers.google.com/appengine/docs/java/images/overview

Per evitare il reindirizzamento, è necessario utilizzare questo metodo per servire le immagini: getServingUrl()

Dalla documentazione:

Il metodo getServingUrl() consente di generare un URL stabile, dedicato per la pubblicazione di miniature di immagini adatte al web. È sufficiente memorizzare una copia singola dell'immagine originale in Blobstore e quindi richiedere un URL per immagine ad alte prestazioni . Questo URL speciale può servire quell'immagine ridimensionata e/o ritagliata automaticamente, e la pubblicazione da questo URL non comporta alcun carico di CPU o di carico dinamico sulla tua applicazione (sebbene la larghezza di banda sia sempre caricata come al solito). Le immagini vengono offerte con una bassa latenza da un'infrastruttura altamente ottimizzata e senza risorse.

Problemi correlati