Вопрос

Я пытаюсь загрузить файл в GAE, используя API Blobstore. Я получаю следующее исключение при запуске локально (режим Dev):

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)

Я бегаю GAE 1.3.5, но пробовал все версии с GAE 1.3.0 (первая версия с BlobStore). Я использую плагин Maven Gae: http://code.google.com/p/maven-gae-plugin/

Моя форма написана в GWT 2.0.4. В настоящее время форма - это просто поле ввода файла с отправкой.

Я получаю вышеуказанное исключение после отправки формы. Я могу успешно получить URL-адрес загрузки из службы BLOBSTORE.

Все отлично работает на GAE. Я проверил, что ничего не вводится в Blobstore в моем локальном DEV ENV (через консоль администратора DEV). Я загружаю CSV, который ~ 1kb, но пробовал другие типы / размеры файлов без успеха (такие же файлы работают на Gae Prod).

Это было полезно?

Решение 2

Проблема была вызвана иметь заглушки и тестирование банок, включенных в классную патрубку при запуске сервера приложения Dev. Если вы используете Maven, просто измените объем зависимости:

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

Если вы не используете Maven, убедитесь, что эти банки не в вашем Интернете INF / Lib или Classpath.

Другие советы

При вызове вашей страницы, которая генерирует HTML (используя сервлет, JSP и т. Д.) И звонки blobstoreService.createUploadUrl("/upload"); Вы не можете повторно использовать эту страницу несколько раз.

Перезагрузить страницу в браузере каждый раз Вы хотите загрузить файл.

$ mvn clean gae:run -DskipTest 

работает на меня

Я не использую Maven, просто Eclipse и плагины Gae. Я также не видел ни одного тестовое задание.jar файлы в моем классе. Я только что удалил конфигурацию запуска в Eclipse и перезапущен и работал. Не имею, что пошло не так, но это исправило проблему для меня во время работы в Dev / Local Mode.

Если не использовать Maven, но затмение с плагином:

Удалить конфигурацию Run / Debug. Чтобы создать новый, просто щелкните правой кнопкой мыши на проекте и выберите RUN / DEBUG AS> Веб-приложение

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top