используя apache fileupload на GAE - PullRequest
       32

используя apache fileupload на GAE

6 голосов
/ 21 апреля 2011

Я использую Apache Commons FileUpload в приложении на стороне сервера Java, которое имеет HTML-форму с полями:

  1. Адресат, который будет заполнен адресом электронной почты адресата
  2. Текст сообщения с сообщением отправителя
  3. Поле

Это приложение я хочу загрузить на GAE. Я могу получить загруженный файл (в виде потока, используя org.apache.commons.fileupload.FileItemStream).

Я хочу также получить входные текстовые поля (т. Е. 1) и 2)) - заполнено пользователем приложения)

Я хочу получить к ним доступ, используя org.apache.commons.fileupload.FileItem, но я получаю java.rmi.server.UID is a restricted class

Ответы [ 2 ]

10 голосов
/ 21 апреля 2011

Вы должны использовать FileItemIterator из Apache 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 голос
/ 21 апреля 2011

Взгляните на это: Google App Engine и FileUpload

Вы не можете писать напрямую в файловую систему в GAE, но посмотрите на GAEVFS , которая использует хранилище данных и memcache для эмуляции файловой системы.

...