在GAE上使用apache fileupload

aur*_*rel 6 java google-app-engine file-upload apache-commons-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

sys*_*out 10

您应该使用FileItemIterator中的Apache的百科全书文件上传.

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);
    }
}
Run Code Online (Sandbox Code Playgroud)


Jus*_*gan 1

看看这个:Google App Engine 和 FileUpload

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