6

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

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

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

我也想接收输入文本字段(即 1)和 2)) - 由应用程序用户完成)

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

4

2 回答 2

10

您应该使用Apache Commons FileUploadFileItemIterator

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);
    }
}
于 2011-04-21T12:40:08.250 回答
1

看看这个:Google App Engine 和 FileUpload

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

于 2011-04-21T11:52:14.997 回答