internet explorer - fileupload - Cargador de archivos Blueimp con IE9
simple jquery file upload (2)
Estoy cargando un archivo a una API REST usando este complemento en una aplicación AngularJS. Cuando segundos después de que se activa el evento ''fileuploaddone'', recibo una notificación amarilla de Internet Explorer que dice: ¿Desea guardar / abrir el
Captura de pantalla adjunta.
Las subidas basadas en iframe requieren un tipo de contenido text / plain o text / html para la respuesta JSON; mostrarán un diálogo de descarga no deseado si la respuesta del iframe está configurada en application / json.
Fuente: https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation
Deberá establecer el tipo de contenido correcto como se explica en el enlace de arriba.
Configuración de carga de archivos de BlueQr jQuery para admitir navegadores modernos, así como IE9 (probado en IE9 y Chrome 39)
Nota: Estoy usando JAVA, Spring 3 en el lado del servidor
archivo index.html
<!doctype html>
<!--[if lt IE 9]> <html class="lt-ie9"> <![endif]-->
<!--[if IE 9]> <html class="ie9"> <![endif]-->
<!--[if gt IE 9]><!--> <html> <!--<![endif]-->
<head>....</head>
<body>....</body>
</html>
archivo test.js
var options = {
url: ''api/test/fileupload'',
maxFileSize: 10000000,
formData: {
id: 1
}
};
if ($(''html'').hasClass(''ie9'') || $(''html'').hasClass(''lt-ie9'')) {
options.forceIframeTransport = true;
} else {
options.dataType = ''json'';
}
$(''#fileUploadInput'').fileupload(options);
archivo test.java
@POST
@Path("/api/test/fileupload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces({ "text/plain" })
public Response uploadFile(
@Context HttpServletResponse response,
@Context HttpServletRequest request,
@FormDataParam("id") Long id,
@FormDataParam("files[]") FormDataContentDisposition fileDetail,
@FormDataParam("files[]") InputStream uploadedInputStream) {
String header = request.getHeader("accept");
String returnContentType = MediaType.APPLICATION_XML;
VEWTestAttachment attObj = testMgr.saveAttachment(id,fileDetail,uploadedInputStream);
if(header.indexOf(MediaType.APPLICATION_JSON) >= 0){
returnContentType = MediaType.APPLICATION_JSON;
}
response.setContentType(returnContentType);
return Response
.ok(attObj,returnContentType)
.build();
}