2009-12-02 36 views
0

我正在使用Grails Web应用程序并需要上传文件。 我有一个表格(这里简化):使用GAEVFS Grails AppEngine文件上传

<g:form action="save" method="post" enctype="multipart/form-data">   
<input type="file" id="image" name="image" />         
<input class="save" type="submit" value="Create" /> 
</g:form> 

,并在控制器代码(我知道这不应该在控制器但这只是为了工作,不是将设计更好):

def save = { 
GaeVFS.setRootPath(servletContext.getRealPath("/")); 
FileSystemManager fsManager = GaeVFS.getManager(); 
FileObject tmpFolder = fsManager.resolveFile("gae://WEB-INF/upload_files"); 
if (!tmpFolder.exists()) { 
    tmpFolder.createFolder(); 
} 

//I NEED CODE HERE TO SAVE THE IMAGE IN THE BIGTABLE VIA GAEVFS 
} 

所以,我有两个问题:

A.当,因为它试图使用Apache共享文件上传,试图保存到文件系统保存创建按钮被按下一个get例外。

如何禁用它?

例外是: java.lang.NoClassDefFoundError:java.rmi.server.UID是一个受限制的类。有关更多详细信息,请参阅Google App Engine开发人员指南。 at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51) at org.apache.commons.fileupload.disk.DiskFileItem。(DiskFileItem.java:103) at org .apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:196) 在org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:358)

B.我需要的代码示例通过gaevfs保存图像 我已经在GaeVfsServlet中看到了一个例子,但我仍然不知道它应该看起来如何。欢迎任何形式的帮助。

GaeVfsServlet网址:http://code.google.com/p/gaevfs/source/browse/trunk/src/com/newatlanta/appengine/servlet/GaeVfsServlet.java

+0

您是否考虑过使用Gaelyk?这是用Groovy编写的GAE框架。 – 2009-12-02 22:40:31

+0

对不起,但它不是我的项目的替代品。 – Adis 2009-12-03 08:59:02

+0

这仍然是一个悬而未决的问题。感谢您的任何建议 – Adis 2009-12-08 17:33:24

回答

0

我遇到了同样的问题,我使用的是Grails的插件叫ajaxuploader来解决这个问题 - 这被上传的文件提供给您的控制器作为一个InputStream对象和犯规必须使用公用文件上传API。

http://www.grails.org/plugin/ajax-uploader