Есть POST запрос. Для наглядности, если бы это был GET запрос, то URL выглядел бы так:
http://localhost:8080/tasks?file=1x.jpg&operation=ADD
Необходимо вытащить параметры запроса, а также загрузить файл. Если не указать enctype="multipart/form-data", загрузка не будет работать (через req.getParts()), а если указать, то при попытке получить параметр получаем null:
String operationString = req.getParameter("operation); //null
Как можно при enctype="multipart/form-data" вытащить параметры request'a?
Используйте библиотеку Apache Commons FileUpload
Форма:
<form method="POST" enctype="multipart/form-data" action="fup.cgi">
File to upload: <input type="file" name="upfile"><br/>
Notes about the file: <input type="text" name="note"><br/>
<br/>
<input type="submit" value="Press"> to upload the file!
</form>
Получение файла (можно использовать как в фильтре так и в сервлете):
// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
// Configure a repository (to ensure a secure temp location is used)
ServletContext servletContext = this.getServletConfig().getServletContext();
File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");
factory.setRepository(repository);
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Parse the request
List<FileItem> items = upload.parseRequest(request);
Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
if (item.isFormField()) {
// Достаём поле формы
processFormField(item);
} else {
// Достаём файл
processUploadedFile(item);
}
}
Пример кода взят отсюда
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости