2013-03-01 2 views
7

форма в HTML, какКак получить файлы из HttpServletRequest в Java Servlet

... 
<form method="post" action="/foobar"> 
    <input type="file" name="attachment" /> 
    <input type="text" name="foo" /> 
    ... other input fields 
</form> 

И Servlet будет как

@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    String attachment = request.getParameter("attachement"); 
    String foo = request.getParameter("foo"); 
    // get other parameters from the request 
    // and get the attachment file 
} 

И я задаюсь

  1. Есть ли способы, которые не используют сторонние библиотеки для получения файлов из объекта HttpServletRequest?

  2. Что возвращает request.getParameter("attachement")? Это имя файла или что-то еще?

  3. Будет ли бинарный вход храниться автоматически веб-контейнером в файловой системе или временно в памяти?

+3

Здесь вы найдете: http://stackoverflow.com/questions/2422468/how-to-upload-files-to-server-using-jsp -servlet/2424824 # 2424824 –

+0

Вы также можете посмотреть http://stackoverflow.com/questions/3831680/httpservletrequest-get-post-data, обрабатывая данные JSON. Если ваше вложение представлено URL-адресом, вам потребуется HTTPURLConnection для извлечения данных. –

ответ

1

перед тем, как любое действие формы должно быть «POST» и enctype = «multipart/form-data».

, который сказал ... для вас, чтобы получить файл, вы должны подготовить запрос самостоятельно.

вы должны проверить:

Multipart requests/responses java

0

добавить в форме ENCTYPE = "многочастные/формы-данных"

<form name="formname" action="servletName" method="post" enctype="multipart/form-data"> 
<input type="file" name="attachment" /> 
    <input type="text" name="foo" /> 
    ... other input fields 
</form> 

теперь, когда вы отправите форму на стороне контроллера, может получить изображение

String picture = (request.getParameter("attachment")).getBytes(); 

Я предположил, что файл должен быть изображением, вы можете передать любой файл

+2

Если вы не получили файл в байтовом массиве вместо строки. В любом случае, он даже не собирается компилироваться. Может быть, опечатка с вашей стороны. – Manpreet

Смежные вопросы