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
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);
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:
- Aggiungere il supporto API GFS a GAE - http://code.google.com/p/googleappengine/issues/detail?id=1199
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.
Ora Google App enigne fornisce API immagine che è diverso da blobstore API. questo è migliorato e specialmente per le immagini. puoi provarlo.