使用GAEVFS上传Grails AppEngine文件

时间:2009-12-02 10:32:07

标签: google-app-engine grails file-upload

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

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

并且在Controller代码中(我知道这不应该在控制器中,但这只是为了让它工作而不是设计得更好):

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
}

所以我有两个问题:

一个。当按下保存创建按钮时,因为它尝试使用试图保存到文件系统的Ap​​ache Commons FileUpload,所以会出现异常。

如何禁用它?

例外情况是: java.lang.NoClassDefFoundError:java.rmi.server.UID是一个受限制的类。有关详细信息,请参阅Google App Engine开发人员指南。 在com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51) 在org.apache.commons.fileupload.disk.DiskFileItem。(DiskFileItem.java:103) 在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

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,我正在使用一个名为ajaxuploader的grails插件来解决问题 - 上传的文件作为输入流对象可供控制器使用,并且不必使用commons文件上传API所有

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