Sto tentando di caricare file insieme ad altri campi modulo utilizzando le chiamate jQuery AJAX.IE 11: Errore durante l'invio di richiesta di dati modulo multiplo: flusso terminato in modo imprevisto
Questa è una funzione comune che chiama l'URL sul server:
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);
});
}
Esaminando dagli strumenti di sviluppo dai browser, questi sono i rispettivi contenuti di richiesta:
Da 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--
Sul lato server, ci sono l'analisi della richiesta, come:
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);
}
Il codice funziona bene da Chrome e Firefox, ma genera l'eccezione di seguito quando ho provato da IE11.
javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: org.apache.commons.fileupload.FileUploadException: Stream ended unexpectedly
Ho fatto riferimento a queste domande SO ma invano.
- Java - FormData in IE throwing org.apache.commons.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly
- Grails Multipart Service Stream ended unexpectedly
Eventuali indicazioni utili sono apprezzati. Grazie.
Life saver !!! Che strano problema però – Edd
Non posso credere che abbia funzionato. – JanTheGun
Mi sono imbattuto in questa app con il mio grails a cui ho accesso da IE10. Il campo nascosto lo risolse. FWIW, il mio modulo ha caselle di controllo, ma non sono le ultime nel modulo (2 campi di testo sono). – amos