在GAE上使用apache fileupload

我在一个java服务器端应用程序中使用Apache Commons FileUpload ,该应用程序具有带字段的html表单:

  1. 将填充目标邮箱的电子邮件地址的目标
  2. 带有发件人消息的消息文本
  3. 用于上传照片的<input type = file …字段。 我可以接收上传的文件(作为流)但是如何

这个应用程序我想在GAE上传。 我可以接收上传的文件(作为流,使用org.apache.commons.fileupload.FileItemStream )。

我想收到太多的输入文本字段(即1)和2)) – 由app的用户完成

我想使用org.apache.commons.fileupload.FileItem访问这些,但我收到java.rmi.server.UID is a restricted class

您应该使用Apache Commons FileUpload的FileItemIterator 。

 import org.apache.commons.fileupload.FileItemStream; import org.apache.commons.fileupload.FileItemIterator; import org.apache.commons.fileupload.servlet.ServletFileUpload; import java.io.InputStream; .. public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { try { ServletFileUpload upload = new ServletFileUpload(); res.setContentType("text/plain"); FileItemIterator iterator = upload.getItemIterator(req); while (iterator.hasNext()) { FileItemStream item = iterator.next(); String name = item.getFieldName(); InputStream stream = item.openStream(); if (item.isFormField()) { //regular form field resp.getWriter().println(("Form:" + name + " : " + Streams.asString(stream)); } else { //fileform field resp.getWriter().println(("File:" +name + " : " + item.getName()); } } } catch (Exception ex) { throw new ServletException(ex); } } 

看看这个: Google App Engine和FileUpload

您无法直接在GAE中写入文件系统,但请查看GAEVFS ,它使用数据存储和内存缓存来模拟文件系统。