2016-11-23 5 views
1

Я получаю запрос (HttpServletRequest req) с 2+ файлами. Я делаю это для того, чтобы получить файлы из запросаПрочтите несколько файлов из HttpServletRequest

HttpServletRequest req; 

.... 

Map parameters = req.getParameterMap(); 

UploadedFile uploadedFile = (UploadedFile) parameters.get("file"); 

String[] serverNames = uploadedFile.getServerFileNames(); 
debug(serverNames.length); 

Однако я всегда получаю только один файл. Что я делаю неправильно? Благодарю.

+0

[Загрузка файла с помощью Servlet API] (http://stackoverflow.com/questions/2422468/how-to-upload-files-to-server-using-jsp-servlet). Что такое 'UploadedFile'? Это от JSF? –

+0

Карта параметров имеет тип 'Map ', он не может хранить загруженный файл. Если вы используете Servlet API 3.0, вы можете использовать метод getPart (String). Если вы используете более старую версию, вам нужна библиотека для синтаксического анализа входного потока. –

+0

@ luke Lee вы правы, но, как это работает, файлы уже загружены на сервер, и я получаю только их имена файлов. Класс UploadedFile фактически содержит только имя файла на сервере. –

ответ

0

Если параметры содержит список файлов, вы можете использовать:

for (Entry entry : parameters.entrySet()) { 
    if (entry.getValue() instanceof UploadedFile) { 
     UploadedFile file = entry.getValue(); 
    } 
} 
+0

в моем случае все файлы находятся в 1 месте. У меня есть только параметр «Файл» в запросе с несколькими мухами. –

+0

Итак, вы можете указать свои параметры следующим образом: parameters = (Map) parameters.get ("file"); и попробуйте решение, которое я предлагаю –

0

Вы можете использовать многокомпонентные данные формы и должны правильно обрабатывать все детали или запрос. Excample из How to upload files to server using JSP/Servlet?

List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); 
for (FileItem item : items) { 
    //handling... 
} 
Смежные вопросы