2011-10-05 11 views
5

Una de las acciones de mi controlador devuelve un archivo al usuario. Me gustaría que el usuario se presente con el cuadro de diálogo de descarga (abrir/guardar), independientemente del tipo de archivo. Esto funciona bien cuando el tipo de archivo es .doc, .docx, .xlsx, etc., pero cuando el archivo es .txt, .xps, .pdf (a veces) o .html, se abre en el navegador.Asp.net MVC FileContentResult - impide la apertura en el navegador

¿Hay alguna manera de evitar que el archivo se abra en el navegador, y sólo permiten al usuario abrir en una ventana separada sin tener que navegar fuera de la página actual?

La solicitud del archivo se realiza utilizando jQuery's $.ajax({}).

Relacionado: Hacer que el navegador maneje la solicitud y mostrar el mensaje emergente en lugar de la llamada AJAX que recibe el contenido del archivo como una cadena de respuesta se explica por this ansewr, pero esta pregunta obliga al navegador a manejar el archivo en una cierta forma una vez que se recibe.

Respuesta

5

No creo que pueda hacer esto con un comando o configuración del lado del cliente. Debería hacer algo en el servidor para que devuelva un tipo de contenido de application/octet-stream para cada archivo. De lo contrario, el navegador examinará el archivo entrante y decidirá qué hacer con él en función de sus propias reglas y capacidades.

Si usted puede hacer esto en su servidor, intente establecer la cabecera "Content-Disposition" a "attachment; filename=whatever.xyz"

+0

Esto produce el mismo resultado que 'application/unknown', que, por desgracia, es algo que estoy tratando de evitar. Para comodidad del usuario, sería mejor permitirles abrir el archivo con un solo clic (simplemente no en la ventana actual del navegador). – yoozer8

+0

Si puede hacer esto en su servidor, intente configurar el encabezado "Content-Disposition" en "attachment; filename = whatever.xyz" – Ray

+0

Eso es exactamente. Gracias. – yoozer8

Cuestiones relacionadas