txt script puedo porque descargar con como archivos archivo http browser http-headers download

http - script - descargar archivos con php y mysql



¿Necesito Content-Type: application/octet-stream para descargar archivos? (1)

No.

El tipo de contenido debe ser lo que se sabe que es, si lo sabes. application/octet-stream se define como "datos binarios arbitrarios" en RFC 2046, y aquí hay una superposición definitiva que es apropiada para entidades cuyo único propósito es guardarlas en el disco, y desde ese momento estar fuera de cualquier cosa " webby ". O mirarlo desde otra dirección; Lo único que se puede hacer con seguridad con application / octet-stream es guardarlo en un archivo y esperar que alguien más sepa para qué sirve.

Puede combinar el uso de Content-Disposition de Content-Disposition con otros tipos de contenido, como image/png o incluso text/html para indicar que desea guardar en lugar de mostrar. Solía ​​ser el caso de que algunos navegadores lo ignoraran en el caso de text/html pero creo que esto fue hace mucho tiempo en este punto (y me voy a la cama pronto, así que no voy a comenzar a probar un todo un montón de navegadores en este momento; tal vez más adelante).

RFC 2616 también menciona la posibilidad de tokens de extensión, y en estos días la mayoría de los navegadores reconocen en inline para indicar que quiere que se muestre la entidad si es posible (es decir, si es un tipo que el navegador sabe cómo mostrar, de lo contrario no tiene otra opción) ). Este es, por supuesto, el comportamiento predeterminado de todos modos, pero significa que puede incluir la parte del filename del filename del encabezado, que los navegadores usarán (quizás con algún ajuste, por lo que las extensiones de archivo coinciden con las normas del sistema local para el tipo de contenido en cuestión, tal vez no ) como sugerencia si el usuario intenta guardar.

Por lo tanto:

Content-Type: application/octet-stream Content-Disposition: attachment; filename="picture.png"

Significa "No sé qué demonios es esto. Guárdelo como un archivo, preferiblemente llamado picture.png".

Content-Type: image/png Content-Disposition: attachment; filename="picture.png"

Significa "Esta es una imagen PNG. Guárdela como un archivo, preferiblemente llamada picture.png".

Content-Type: image/png Content-Disposition: inline; filename="picture.png"

Significa "Esta es una imagen PNG. Muéstrela a menos que no sepa cómo mostrar imágenes PNG. De lo contrario, o si el usuario elige guardarla, le recomendamos el nombre picture.png para el archivo que guarda".

De esos navegadores que reconocen en inline algunos siempre lo usarían, mientras que otros lo usarían si el usuario hubiera seleccionado "guardar enlace como" pero no si hubieran seleccionado "guardar" mientras lo veía (o al menos IE solía ser así, puede haber cambiado hace algunos años).

El estándar HTTP dice:

Si este encabezado [Contenido-Disposición: adjunto] se usa en una respuesta con el tipo de contenido application / octet-stream, la sugerencia implícita es que el agente de usuario no debe mostrar la respuesta, sino que ingrese directamente una `guardar respuesta como ... . ''diálogo.

Lo leo como

Content-Type: application/octet-stream Content-Disposition: attachment

Pero habría pensado que Content-Type sería application/pdf , image/png , etc.

¿Debo tener Content-Type: application/octet-stream si deseo que los navegadores descarguen el archivo?