2008-10-09 8 views
16

Necesito transmitir un archivo a la Respuesta para guardar en la máquina del usuario final. El archivo es texto sin formato, entonces, ¿qué tipo de contenido puedo usar para evitar que el texto se muestre en el navegador?¿Qué tipo de contenido fuerza la descarga de respuesta de texto?

+0

relacionado: [¿Necesito Content-Type: application/octet-stream para la descarga de archivos? ] (http://stackoverflow.com/q/20508788/95735) –

Respuesta

21

Para estar en el lado seguro y garantizar un comportamiento coherente en todos los navegadores, por lo general es mejor utilizar tanto:

Content-Type: application/octet-stream 
Content-Disposition: attachment;filename=\"My Text File.txt\" 
+4

Solo necesita la disposición del contenido, de esa manera puede mantener un tipo de contenido relevante, como texto/plano, o lo que sea. –

+1

@MattConnolly ¿Dónde propones * mantener un tipo de contenido relevante * si no vas a usar el encabezado 'Content-Type'? –

+1

Respuesta incorrecta - ver http://stackoverflow.com/q/20508788/95735 –

6

No creo que funcione de esa manera.

Utilice un encabezado Content-Disposition: attachment, pero quédese con el tipo de contenido correcto.

+0

Solo envíe 'Content-Type: application/octet-stream' cuando User-Agent sea Internet Explorer 6 ... –

23

En la mayoría de los casos, el siguiente debería funcionar:

Content-type: application/octet-stream 
Content-Disposition: attachment; filename="myfile.txt" 

Hay algunos casos marginales de los navegadores que aún se mostrará como un archivo de texto, pero ninguno de los navegadores convencionales serán (estoy hablando de navegadores integrados en algunos MID).


EDITAR: Cuando esta respuesta fue publicado originalmente, enviando el tipo MIME application/octet-stream era la única manera fiable para desencadenar una descarga en algunos navegadores. Ahora, en 2016, si no necesita admitir un navegador antiguo, puede especificar con seguridad el tipo de mime adecuado.

+0

¿Necesita mentir sobre el contenido? -¿tipo? Sería mejor si pudieras usar Content-Disposition, que/debería/funciona. –

+0

Según mi experiencia, application/octet-stream hace que funcione de manera más confiable en todos los navegadores. – ceejayoz

+0

^Lo que dijo. Internet Explorer 6 aún puede mostrarlo como texto si se usa texto/plano. –

Cuestiones relacionadas