Как я могу обрабатывать запросы по почте Multipart/Form-Data в моем сервлеле Java?
-
29-09-2019 - |
Вопрос
Мне очень трудно справиться с запросами Multipart/Form Data с моим сервером Java Application. Из того, что я узнал, спецификация Servlet 3.0 предоставляет такие методы, как httpservlectrequest.getParts (), которые были бы идеальными для обработки данных, загруженных в мой сервис.
Тем не менее, этот метод является частью спецификации сервлета 3.0, и мой сервер приложений (Tomcat 6) еще не поддерживает это. Даже с действительным файлом 3.0 web.xml и Java EE 6 LIBS, я получаю следующее исключение при попытке вызовать 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, как опубликовано в другом ответе, или вы можете использовать стеклянную рыбу (в зависимости от текущей фазы и типа вашего проекта).
Когда мы использовали метод POST, чем данные зашифрованы, поэтому мы должны использовать ServletFileUpload для получения запрошенных данных и использования FileItemiterator, мы можем получить все данные формы.
Я уже отвечаю на эту ссылку Как обработать форму, отправленную Google Web Toolkit в сервисе