почтовая форма содержит файл для сервлета - PullRequest
2 голосов
/ 18 мая 2011

Я хочу опубликовать форму, которая имеет много полей, одно из которых - файл, когда я делаю так

<form action="MediaManagementServlet" name="addMedia" method="post" enctype="multipart/form-data">
//    many fileds
<label>upload file</label>
<input type="file" name="file" id="fileName"/>

он не доходит до сервлета, но когда я делаю так

<form action="MediaManagementServlet" name="addMedia" method="post" >

он достигает сервлета, но когда я получаю параметр файла, он печатает ноль?

где смысл, который скрыт для меня?

1 Ответ

3 голосов
/ 18 мая 2011

Он обязательно должен достичь сервлета в обоих случаях.Скорее всего, вы не запускаете код, который, по вашему мнению, выполняете, или неправильно интерпретируете результаты, или имеете какой-то JavaScript, который принимает отправку, но не обрабатывает ее правильно.Сохраните, восстановите, заново разверните и перезапустите все.getParameter() возвращает null только для всех полей в 1-м случае и только для файла во 2-м случае.

Что касается проблемы с параметром null, то при использовании кодировки multipart/form-data данные не отправляются в виде стандартной строки запроса application/www-form-urlencoded в теле запроса.Вместо этого он был отправлен как блок multipart/form-data в теле запроса.getParameter() и супруги не распознают это, и поэтому все они возвращают null.Вам нужно использовать getParts().

Collection<Part> parts = request.getParts();
// Loop through it and collect manually.

Или, если вы все еще используете старый Servlet 2.5 или более раннюю версию, вам нужно использовать Apache Commons FileUpload для его анализа.

См. Также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...