Domanda

Sto provando a caricare un file in GAE utilizzando l'API Blobstore.Ricevo la seguente eccezione quando eseguo il server GAE localmente (modalità sviluppatore):

WARNING: /_ah/upload/ag10cmlwc2NoZWR1bGVychsLEhVfX0Jsb2JVcGxvYWRTZXNzaW9uX18YFQw
java.lang.IllegalStateException: Must call one of set*BlobStorage() first.
 at com.google.appengine.api.blobstore.dev.BlobStorageFactory.getBlobStorage(BlobStorageFactory.java:24)
 at com.google.appengine.api.blobstore.dev.UploadBlobServlet.init(UploadBlobServlet.java:88)
 at javax.servlet.GenericServlet.init(GenericServlet.java:215)
 at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440)
 at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339)
 at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
 at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)

Utilizzo GAE 1.3.5 ma ho provato tutte le versioni a partire dalla GAE 1.3.0 (prima versione con Blobstore).Sto usando il plugin GAE Maven: http://code.google.com/p/maven-gae-plugin/

Il mio modulo è scritto in GWT 2.0.4.Attualmente, il modulo è solo un campo di input del file con un invio.

Ricevo l'eccezione di cui sopra dopo aver inviato il modulo.Sono in grado di recuperare correttamente un URL di caricamento dal servizio Blobstore.

Tutto funziona bene su GAE.Ho verificato che non sia stato inserito nulla nel blobstore nel mio dev env locale (tramite la console di amministrazione dev).Sto caricando un CSV di ~ 1 KB ma ho provato anche altri tipi/dimensioni di file senza successo (gli stessi file funzionano su GAE prod).

È stato utile?

Soluzione 2

Il problema è stato causato da avere gli stub e testare vasetti inclusi nel classpath quando si esegue il server dev app. Se si utilizza Maven, è sufficiente modificare la portata della dipendenza:

<dependency>
    <groupId>com.google.appengine</groupId>
    <artifactId>appengine-api-stubs</artifactId>
    <version>${gae.version}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>com.google.appengine</groupId>
    <artifactId>appengine-testing</artifactId>
    <version>${gae.version}</version>
    <scope>test</scope>
</dependency>

Se non si utilizza Maven, assicurarsi che questi vasi non sono nella vostra WEB-INF / lib o classpath.

Altri suggerimenti

Quando chiami la tua pagina che genera html (usando servlet, jsp, ecc.) e chiama blobstoreService.createUploadUrl("/upload"); non puoi riutilizzare questa pagina più volte.

Ricarica questa pagina in un browser ogni volta vuoi caricare il file.

$ mvn clean gae:run -DskipTest 

lavora per me

Non sto usando Maven, Eclipse e solo i plugin GAE. Inoltre non ho visto nessuna test file .jar nel mio percorso di classe. Ho appena cancellato la configurazione di esecuzione in Eclipse e riavviato e ha funzionato. Non ho idea di cosa è andato storto, ma questo risolto il problema per me durante l'esecuzione in modalità dev / locale.

Se non si utilizza Maven, ma Eclipse con il plugin:

Rimuovi RUN / DEBUG CONFIGURAZIONE. Per creare nuova, è sufficiente fare clic destro sul progetto e selezionare eseguire / debug come> Web Application

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top