Frage

Ich versuche, eine Datei in GAE mit der Blobstore API hochladen. Ich erhalte die folgende Ausnahme, wenn der GAE-Server lokal ausgeführt (dev-Modus):

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)

Ich bin mit GAE 1.3.5 aber haben alle Versionen seit GAE 1.3.0 (erste Version mit dem Blobstore) versucht. Ich bin mit dem GAE Maven Plugin: http://code.google.com/p / maven-gae-Plugin /

Meine Form ist in GWT 2.0.4 geschrieben. Derzeit ist die Form nur ein Dateieingabefeld mit einem einreichen.

Ich erhalte die oben genannte Ausnahme nach dem Absenden des Formulars. Ich bin in der Lage, erfolgreich eine Upload-URL aus dem Blobstore Dienst abgerufen werden.

funktioniert alles einwandfrei auf GAE. Ich vergewissert haben, dass nichts in die Blobstore in meinem lokalen dev env (über die Admin-Konsole dev) eingegeben wird. Ich bin das Hochladen einer CSV, die ~ 1 KB ist, aber haben andere Dateitypen ausprobiert / Größen auch ohne Erfolg (gleiche Dateien arbeiten auf GAE prod).

War es hilfreich?

Lösung 2

Das Problem wurde durch den Stubs ist, und Testen Gläser auf dem Classpath enthalten, wenn die Entwickler App-Server ausgeführt wird. Wenn Sie Maven verwenden, einfach den Umfang der Abhängigkeit ändern:

<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>

Wenn Sie nicht mit Maven, stellen Sie sicher, dass diese Gläser sind nicht in Ihrem WEB-INF / lib oder Classpath.

Andere Tipps

Wenn Sie Ihre Seite aufrufen, die HTML-Code generiert (mit Servlets, JSP, etc.) und Anrufe blobstoreService.createUploadUrl("/upload"); Sie können nicht wiederverwenden diese Seite mehrmals.

neu laden Seite in einem Browser jedes Mal Sie möchten die Datei laden.

$ mvn clean gae:run -DskipTest 

funktioniert für mich

Ich verwende Maven nicht nur Eclipse und den GAE-Plugins. Ich habe auch nicht sehen, jede test .jar-Dateien in meinem Classpath. Ich löschte nur die Run-Konfiguration in Eclipse und neu gestartet und es funktionierte. Keine Ahnung, was falsch gelaufen ist, aber dies das Thema für mich fest, während in dev / local-Modus ausgeführt wird.

Wenn nicht Maven aber Eclipse-Plugin:

REMOVE RUN / Debug-Konfiguration. So erstellen Sie neue, einfach direkt am Projekt klicken, und wählen Sie Ausführen / Debug As> Web Application

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top