IE 11: Erro ao enviar solicitação de dados de formulário de várias partes: O fluxo foi encerrado inesperadamente
Estou tentando fazer upload de arquivos junto com outros campos de formulário usando chamadas jQuery AJAX.
Esta é uma função comum que chama a URL no servidor:
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);
});
}
Ao examinar as ferramentas de desenvolvimento dos navegadores, estes são os respectivos conteúdos de solicitação:
A partir do 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
cromada
------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--
No lado do servidor, estamos analisando a solicitação como:
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);
}
O código funciona bem no Chrome e Firefox, mas gera a exceção abaixo quando tentei no IE11.
javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: org.apache.commons.fileupload.FileUploadException: Stream ended unexpectedly
Eu me referi a essas perguntas do SO, mas em vão.
Java - FormData no IE lançando org.apache.commons.fileupload.MultipartStream $ MalformedStreamException: o fluxo foi encerrado inesperadamenteO Grails Multipart Service Stream terminou inesperadamenteQuaisquer indicadores úteis são apreciados. Obrigado.