2012-03-12 7 views
3

У меня есть страница, которая имеет этот кусок кода:Как мой сервлет получает параметры из формы multipart/form-data?

<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"); в моем Servlet он показывает нуль. Как я могу заставить свой сервлет получить параметры?

+0

http://www.jguru.com /faq/view.jsp?EID=1045507 –

+0

Возможный дубликат [Как загрузить файлы в JSP/Servlet?] (http://stackoverflow.com/questions/2422468/how-to-upload-files-in-jsp- сервлет/2424824 # 2424824), другими словами: просто по тому же API, что и вы извлекли файл. – BalusC

ответ

1

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

+0

С какого класса getParts()? – Bolaum

+0

Нажмите на ссылку? – BalusC

+0

Опера, я не видел ссылку. – Bolaum

6

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

1

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

Tutorial - Uploading Files with Java Servlet Technology

0

Вы должны послать параметр, как это:

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

    }}