2009-07-08 10 views
5

Sto cercando di scrivere un'applicazione Web Java su Google App Engine. Voglio poter caricare e servire immagini dall'app ma ho appena realizzato che il Datastore ha un limite di 1 MB. Questo è un po 'troppo piccolo per le foto decenti. C'è un modo alternativo che puoi suggerire di fare questo? Forse memorizzandoli come contenuti statici piuttosto che nel Datastore ma sembra che non ci siano API per questo.Memorizzazione di immagini caricate su Google App Engine con Java

risposta

4

Ora è possibile su GAE. È sufficiente memorizzare i file in Blobstore. È possibile caricare i file in questo modo:

<body> 
<form action="<%= blobstoreService.createUploadUrl("/upload") %>" method="post" enctype="multipart/form-data"> 
    <input type="file" name="myFile"> 
    <input type="submit" value="Submit"> 
</form> 

E poi a servire file da servlet:

public void doGet(HttpServletRequest req, HttpServletResponse res) 
throws IOException { 
    BlobKey blobKey = new BlobKey(req.getParameter("blob-key")); 
    blobstoreService.serve(blobKey, res); 
1

Oggi non esiste un modo semplice, ma può cambiare in seguito.

Il meglio che puoi fare in questo momento è quello di votare (stella), la richiesta di aggiungere il supporto del file system di Google per AppEngine nel numero di inseguitore:

2

Non è possibile scrivere sul filesystem in App Engine, quindi per ora il contenuto statico è fuori - ma un'API per archiviare e servire BLOB è sulla tabella di marcia. Nel frattempo, la soluzione migliore è dividere il file in blocchi e archiviarli nel datastore o utilizzare un servizio esterno come S3.