IE 11: ошибка при отправке запроса данных многостраничной формы: поток неожиданно закончился
Я пытаюсь загрузить файлы вместе с некоторыми другими полями формы с помощью jQuery AJAX-вызовы.
это общая функция, которая вызывает URL-адрес на сервере:
function uploadDocument(rquestURL,formId,callback){
$.ajax({
type : 'POST',
url : rquestURL,
cache:false,
processData:false,
contentType:false,
data : new FormData($("#"+formId)[0])
}).done(function(response) {
callback(response);
});
}
при рассмотрении инструментов dev из браузеров, это соответствующее содержимое запроса:
из IE11
-----------------------------7dfad39402e6
Content-Disposition: form-data; name="subject"
Test
-----------------------------7dfad39402e6
Content-Disposition: form-data; name="message"
Test test
-----------------------------7dfad39402e6
Content-Disposition: form-data; name="announcementAttachment"; filename=""
Content-Type: application/octet-stream
<Binary File Data Not Shown>
---------------------------7dfad39402e6
Chrome
------WebKitFormBoundaryp8rj3ArKDsbYw0BZ
Content-Disposition: form-data; name="subject"
Test
------WebKitFormBoundaryp8rj3ArKDsbYw0BZ
Content-Disposition: form-data; name="message"
Test test
------WebKitFormBoundaryp8rj3ArKDsbYw0BZ
Content-Disposition: form-data; name="announcementAttachment"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundaryp8rj3ArKDsbYw0BZ--
на стороне сервера мы анализируем запрос как:
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
final FileItemFactory factory = new DiskFileItemFactory();
final ServletFileUpload fileUpload = new ServletFileUpload(factory);
if (ServletFileUpload.isMultipartContent(request)) {
// get the request content and iterate through
items = fileUpload.parseRequest(request);
}
в код отлично работает из Chrome и Firefox, но выбрасывает приведенное ниже исключение, когда я пытался из IE11.
javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: org.apache.commons.fileupload.FileUploadException: Stream ended unexpectedly
я ссылался на эти так вопросы, но напрасно.
- Java-FormData в IE бросая орг.апаш.палата общин.fileupload с.MultipartStream$MalformedStreamException: поток закончился неожиданно
- поток обслуживания Grails Multipart закончился неожиданно
любые полезные указатели ценятся. Спасибо.
3 ответов
оказалось странной проблемой. Вот как это решается.
- у нас были флажки в конце формы. Упомянутая проблема возникла, когда мы не выбираем ни один из флажков. Запрос не был сформирован правильно, и, следовательно, сервер выбросил ошибку.
- добавить скрытое поле в конце формы (убедитесь, что это последнее поле формы) и присвоить значение.
Что это. Сработало как по волшебству!
Подробнее здесь.
У меня была та же проблема. У меня был только атрибут id и отсутствовал атрибут name в скрытом поле ввода, который дал мне ошибку ниже. Проблема решена после добавления атрибута name в поле ввода скрытого типа.
id=" отметка времени " name="отметка времени"
вызвано: org.апаш.палата общин.fileupload с.MultipartStream$MalformedStreamException: поток закончился неожиданно Вызванные: org на.апаш.палата общин.fileupload с.FileUploadException: поток завершен неожиданно
Это случилось со мной, проблема в том, что там было место.перезагрузка после выбора документа для загрузки. Это остановило поток для анализа.