Как мой сервлет может получать параметры из формы multipart / form-data? - PullRequest
3 голосов
/ 12 марта 2012

У меня есть страница с этим фрагментом кода:

<form action="Servlet" enctype="multipart/form-data">
<input type="file" name="file">
<input type="text" name="text1">
<input type="text" name="text2">
</form>

Когда я использую request.getParameter("text1"); в моем сервлете, он показывает ноль. Как я могу заставить свой сервлет получать параметры?

Ответы [ 4 ]

6 голосов
/ 12 марта 2012

Все параметры запроса встроены в составные данные.Вам нужно будет извлечь их, используя что-то вроде загрузки файла Commons: http://commons.apache.org/fileupload/

1 голос
/ 07 ноября 2013

Вам необходимо отправить параметр следующим образом:

writer.append("--" + boundary).append(CRLF);
writer.append("Content-Disposition: form-data; name=\"" + urlParameterName + "\"" )
                .append(CRLF);
writer.append("Content-Type: text/plain; charset=" + charset).append(CRLF);
writer.append(CRLF);
writer.append(urlParameterValue).append(CRLF);
writer.flush();

А на стороне сервлета обработайте элементы формы:

items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
       item = (FileItem) iter.next();
       if (item.isFormField()) {
          name = item.getFieldName(); 
          value = item.getString();

   }}
1 голос
/ 15 июля 2013

Pleepleus прав, commons-fileupload - хороший выбор.Если вы работаете в servlet 3.0+ environment, вы также можете использовать его многокомпонентную поддержку, чтобы легко завершить задание многоэлементного анализа данных.Просто добавьте @MultipartConfig к классу сервлетов, затем вы можете получить текстовые данные, вызвав запрос. getParameter(), очень просто.

Учебник - Загрузка файлов с технологией сервлетов Java

1 голос
/ 12 марта 2012

Использование getParts ()

...