Мне очень тяжело работать с запросами multipart / form-data на моем сервере приложений Java. Из того, что я обнаружил, спецификация сервлета 3.0 предоставляет такие методы, как HttpServletRequest.getParts (), что было бы идеально для обработки данных формы, загруженных в мой сервлет.
Однако этот метод является частью спецификации сервлета 3.0, и мой сервер приложений (Tomcat 6) пока не поддерживает это. Даже при наличии допустимого файла 3.0 web.xml и библиотек java EE 6 при попытке вызвать getParts () я получаю следующее исключение:
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getParts()Ljava/util/Collection;
Переключение серверов приложений на самом деле не является возможным вариантом для этого проекта. Существуют ли сторонние библиотеки для обработки multipart / form-data в сервлетах Java?
Посмотрите на Apache Commons Fileupload. Он предоставляет вам программный API для разбора многокомпонентного запроса и перебора отдельных его частей.
Я использовал его в прошлом для простой обработки многочастных запросов, и он отлично справляется со своей задачей, не будучи слишком сложным.
Tomcat 6 не поддерживает и не будет поддерживать спецификацию сервлетов 3.0 . Вы должны попытаться сделать это на Tomcat 7, но я не совсем уверен, присутствует ли эта функция в доступной в настоящее время бета-версии. Однако ожидается, что эта функциональность будет присутствовать в производственной версии.
Вы можете продолжать использовать Apache Commons FileUpload, как указано в другом ответе, или вы можете использовать Glassfish (в зависимости от текущей фазы и типа вашего проекта).