92

Estoy devolviendo una secuencia en alguna respuesta configurando el encabezado de tipo de contenido apropiado. El comportamiento que estoy buscando es la siguiente:Cómo establecer el nombre de archivo de respuesta sin forzar el diálogo guardar

  • Si el navegador es capaz de representar el contenido del tipo de contenido que se da a continuación, se debe mostrar en la ventana del navegador.

  • Si el navegador no sabe cómo representar el contenido, debe mostrar el cuadro de diálogo de guardar donde el nombre del archivo debe ser el proporcionado en la respuesta.

El problema que si fijo la cabecera Content-Disposition con:

"apego; filename =" miarchivo.txt ""

el navegador mostrará siempre los savesas diálogo.

Si no configuro Content-Disposition, el nombre de archivo utilizado en el cuadro de diálogo de guardar es el que está en la url que no funciona en mi caso.

También intenté configurar Content-Disposition en línea, pero el resultado es el mismo.

Respuesta

128

La forma correcta podría ser:

Content-Disposition: inline; filename="myfile.txt"

+6

no estoy seguro de lo que entiende por 'no es ampliamente apoyado atrás cuando escribió esta respuesta, y desea que había dado datos concretos en lugar de FUD . Acabo de probar en IE 6, IE 8, Chrome moderno y Firefox moderno, y funciona en todos ellos; por lo que puedo decir, es totalmente seguro usar esto hoy en día. –

+0

No funciona con mi FireFox 37.0.2 e Internet Explorer 11.0.18. Me presentan un cuadro de diálogo Guardar como. Sin embargo, Chrome funciona. – angularsen

+2

Actualmente funciona tanto en Firefox 37.0.2 como en IE 11.0.18 (recién probado). Probablemente esté usando un tipo de contenido que su navegador no puede mostrar en línea. – Patonza

3

No estoy seguro si eso es posible de manera predeterminada. Por cuestiones de seguridad, el navegador no envía todos los tipos de contenido que puede manejar, sino solo unos pocos Accept-Encoding, que no ayudan mucho en su escenario.

Quizás pueda preguntarle a su usuario qué es lo que prefiere, y almacenar esa información en su perfil.

Cuestiones relacionadas