Форма загрузки HTML-файла с дополнительными полями ввода - PullRequest
1 голос
/ 23 февраля 2011

У меня есть следующая HTML-форма ...

<html>
<head><title>Upload Servlet</title></head>
<body><h2>Upload Servlet</h2>

<form name='uploadparams' enctype='multipart/form-data' action='' method='post'>
    <label>Migrate Options From:
        <select name='migrateFrom'>
            <option></option>
            <option value='version 1'>version 1</option>
        </select>
    </label>
    <br/>
    <input type='file' name='zipFile'>
    <br/>
    <input type='hidden' value='willnotshowupinservlet'/>
    <button type='submit'>Submit</button>
</form>
</body>
</html>

Проблема в том, что, хотя я могу читать файл с именем параметра http «zipFile», мой сервлет не видит другие параметры"willnotshowupinservlet" и "migrateFrom".Могут ли формы загрузки файлов иметь только один вход (файл ввода)?

1 Ответ

5 голосов
/ 23 февраля 2011

Они действительно недоступны как обычные параметры запроса, потому что вы установили кодировку формы на multipart/form-data (что действительно обязательно для того, чтобы иметь возможность включать содержимое файла в тело запроса). Вы должны проанализировать тело запроса на соответствие спецификации multipart/form-data. Вызовы getParameter() API сервлетов поддерживают только кодировку формы application/x-www-form-urlencoded, которая является значением по умолчанию enctype элемента HTML <form>.

Обычно используемый API для облегчения работы: Apache Commons FileUpload . Или, когда вы уже используете Servlet 3.0, вам необходимо добавить сервлет к значку @MultipartConfig. Вы можете найти конкретные примеры обоих подходов в этом ответе .

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