我要上传使用Blob存储区API在GAE的文件。运行GAE服务器时本地我得到以下异常(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(第一版与Blob存储区)的所有版本。我使用的GAE Maven插件: http://code.google.com/p / Maven的GAE-插件/

我的形式被写入GWT 2.0.4。目前,该形式是用一个提交只是一个文件输入字段。

我接收提交表单后上述异常。我能够从Blob存储服务已成功检索上传网址。

一切工作在GAE罚款。我核实,没有什么是进入Blob存储在我的本地开发ENV(通过dev的管理控制台)。我上传CSV是1Kb的〜但都试过其他文件类型/大小,以及没有成功(同样的文件上GAE PROD工作)。

有帮助吗?

解决方案 2

这个问题是通过具有短截线和测试运行dev的应用服务器当包括在类路径罐子引起的。如果使用的是行家,简单地改变依赖的范围:

<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,确保这些罐子是不是在你的WEB-INF / lib或类路径。

其他提示

当调用你的页面生成HTML(使用的servlet,JSP等),并调用blobstoreService.createUploadUrl("/upload");你不能多次重复使用此页。

刷新页面在浏览器中的每次您要上传的文件。

$ mvn clean gae:run -DskipTest 

适用于我

我不使用Maven,只是Eclipse和GAE插件。我还没有看到我的类路径中任何的测试的.jar文件。我刚刚删除的运行配置在Eclipse并重新启动和它的工作。不知道哪里出了问题,但这个固定的问题,我在开发/本地模式下运行时。

如果不使用Maven但是Eclipse插件用:

REMOVE RUN /调试配置。要创建新的,只需右键点击项目并选择运行/调试方式>网络应用程序

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top