исключение при разборе данных многостраничной формы
Я пытаюсь обработать загрузку файла и использую класс com.oreilly.servlet.multipart.MultipartParser для анализа опубликованных данных (в cos.jar). Однако, когда я вызываю конструктор MultipartParser, я получаю следующее исключение:
java.io.IOException: Corrupt form data: premature ending
at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:166)
at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:94)
Кто-нибудь видел это раньше? Из того, что я прочитал, это означает, что данные закончились до того, как нашли границу, которую искали. Как я могу это исправить?
Я использую cos.jar версии 1.0.
Спасибо!
Ответов (2)2
http://www.servlets.com/cos/faq.html
Это указывает на то, что возникла проблема с анализом запроса POST, отправленного клиентом. Причин проблемы может быть много:
- Клиент нажал кнопку СТОП (на самом деле это не проблема, но вызывает преждевременное завершение)
- Ошибка в веб-форме
- Ошибка в сервлете
- Ошибка в веб-сервере
- Ошибка в браузере
- Ошибка в самой библиотеке com.oreilly.servlet
История показала, что веб-сервер является наиболее частой причиной проблем, вероятно, из-за того, что существует очень много разных серверов, и кажется, что немногие производители тестируют свои возможности загрузки двоичных файлов.
Во-первых, убедитесь, что ваш клиент не нажимает кнопку СТОП. Затем проверьте, размещена ли уже ваша проблема на ресурсе «Ошибки сервлетов, о которых вам нужно знать» на этом сайте. Если об этом мало что известно, то вы должны быть одними из первых, кто об этом узнает! И вы можете поделиться с нами своим открытием здесь!
Во-вторых, проверьте, работает ли загрузка, используя предоставленную форму upload.html и класс DemoRequestUploadServlet.java. Некоторые люди находили в своей форме ошибки, которые вызывали проблемы. Проверка этой комбинации покажет, так ли это. Один пользователь, Duke Takle, обнаружил, что это исключение было вызвано перенаправлением:У меня был такой же «преждевременный конец», что и у Альберта Смита. Я обнаружил, что проблема была изолирована в IE 5.0. Приложение, которое меня беспокоило, выполняло перенаправление после создания MultipartRequest. Похоже, что эта конструкция прошла хорошо, за исключением того, что в IE 5.0 браузер снова попытался сделать запрос, и к тому времени ServletInputStream был пуст. Я изменил приложение, чтобы просто написать необходимый ответ вместо перенаправления. Эта проблема была обнаружена и исправлена, как описано в Tomcat 4.0 и Weblogic 6.1.Другие пользователи обнаружили ошибки в своем обслуживающем сервлете, где они вызывают request.getParameter () вместо multipartRequest.getParameter (), а некоторые серверы ложно считывают входной поток, когда их getParameter () вызывается, вызывая «неожиданный конец части».