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

я ссылался на эти так вопросы, но напрасно.

любые полезные указатели ценятся. Спасибо.

3 ответов


оказалось странной проблемой. Вот как это решается.

  • у нас были флажки в конце формы. Упомянутая проблема возникла, когда мы не выбираем ни один из флажков. Запрос не был сформирован правильно, и, следовательно, сервер выбросил ошибку.
  • добавить скрытое поле в конце формы (убедитесь, что это последнее поле формы) и присвоить значение.

Что это. Сработало как по волшебству!

Подробнее здесь.


У меня была та же проблема. У меня был только атрибут id и отсутствовал атрибут name в скрытом поле ввода, который дал мне ошибку ниже. Проблема решена после добавления атрибута name в поле ввода скрытого типа.

id=" отметка времени " name="отметка времени"

вызвано: org.апаш.палата общин.fileupload с.MultipartStream$MalformedStreamException: поток закончился неожиданно Вызванные: org на.апаш.палата общин.fileupload с.FileUploadException: поток завершен неожиданно


Это случилось со мной, проблема в том, что там было место.перезагрузка после выбора документа для загрузки. Это остановило поток для анализа.