Много сервлет файла загрузки части [дубликат]

7
задан BalusC 4 February 2010 в 11:33
поделиться

3 ответа

Чтобы просмотреть и выбрать файл для загрузки, вам потребуется поле в форме. Как указано в спецификации HTML , вам необходимо использовать метод POST , а атрибут enctype формы должен иметь значение multipart / form-data .

<form action="uploadServlet" method="post" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="submit" />
</form>

После отправки такой формы данные формы доступны в многостраничном формате в HttpServletRequest # getInputStream () .В целях тестирования (!) Вы можете прочитать поток, используя следующий фрагмент:

BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
for (String line; (line = reader.readLine()) != null;) {
    System.out.println(line);
}

Однако вам нужно проанализировать поток побайтно (вместо char за char). До свежего нового API Servlet 3.0 стандартный API сервлетов не предоставлял никаких встроенных средств для их анализа. Поля нормальной формы также недоступны обычным способом request.getParameter () , они включаются в поток данных составной формы.

Если вы еще не используете Servlet 3.0 (которому чуть меньше двух месяцев), то вам нужно самостоятельно проанализировать поток. Анализ такого потока требует точных фоновых знаний о том, как задаются и структурируются запросы данных из нескольких частей . Чтобы создать идеальный составной парсер, вам придется написать много кода. Но, к счастью, есть Apache Commons FileUpload , который годами доказал свою надежность. Внимательно прочтите как Руководство пользователя , так и Часто задаваемые вопросы , чтобы найти примеры кода и узнать, как использовать его в оптимальной степени (примите во внимание MSIE!).

12
ответ дан 6 December 2019 в 09:19
поделиться

Шаг 1

устанавливает атрибут тега формы enctype.

<form enctype="multipart/form-data" ....>
   <input type="file" id="file1" name="file"/>
   .... other stuff
</form>

Шаг-2

Прочтите сообщение Джастина.

2
ответ дан 6 December 2019 в 09:19
поделиться

Шаг 1

Прочтите сообщение adatapost.

Шаг 2

Ознакомьтесь с проектом Apache Commons FileUpload .

Есть аналогичное работоспособное решение от O'Reily, но его лицензия на использование требует, чтобы вы купили книгу, и даже это требование настолько плохо сформулировано, что я не получу его еще одной ссылкой.

5
ответ дан 6 December 2019 в 09:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: