在GAE上使用apache fileupload

时间:2011-04-21 10:17:05

标签: java google-app-engine file-upload apache-commons-fileupload

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

  1. 将填充目标邮箱的电子邮件地址的目的地
  2. 带有发件人消息的消息文本
  3. A< input type = file ...用于上传照片的字段。我可以接收上传的文件(作为流)但是如何
  4. 我想在GAE上传此应用。 我可以接收上传的文件(使用org.apache.commons.fileupload.FileItemStream作为流)。

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

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

2 个答案:

答案 0 :(得分:10)

您应该使用FileItemIteratorApache Commons FileUpload

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);
    }
}

答案 1 :(得分:1)

看看这个:Google App Engine and FileUpload

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