Загрузка файла Grails AppEngine с использованием GAEVFS - PullRequest
0 голосов
/ 02 декабря 2009

Я работаю над веб-приложением Grails и мне нужно загрузить файлы. У меня есть форма (здесь упрощенно):

<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. При нажатии кнопки «Сохранить» создается исключение get, поскольку он пытается использовать Apache 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, но я до сих пор не знаю, как именно это должно выглядеть в моем случае. Любая помощь приветствуется.

URL-адрес GaeVfsServlet: http://code.google.com/p/gaevfs/source/browse/trunk/src/com/newatlanta/appengine/servlet/GaeVfsServlet.java

1 Ответ

0 голосов
/ 15 марта 2011

Я столкнулся с той же самой проблемой, и я использую плагин grails под названием ajaxuploader, чтобы обойти эту проблему - загружаемый файл доступен вашему контроллеру в качестве объекта inputtream и не требует использования API загрузки файлов на все.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...