No.
El tipo de contenido debe ser lo que se sabe que es, si lo sabe. application/octet-stream
se define como "datos binarios arbitrarios" en RFC 2046, y hay una superposición definitiva aquí de que es apropiado para entidades cuyo único propósito es guardar en el disco y, a partir de ese momento, estar fuera de todo "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
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 momento (y me voy a la cama pronto, así que no voy a comenzar a probar un montón de navegadores en este momento; tal vez más tarde).
RFC 2616 también menciona la posibilidad de tokens de extensión, y en estos días la mayoría de los navegadores reconocen inline
que quiere decir que desea 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) . Por supuesto, este es el comportamiento predeterminado de todos modos, pero significa que puede incluir la filename
parte del encabezado, que los navegadores usarán (quizás con algún ajuste para que las extensiones de archivo coincidan con las normas del sistema local para el tipo de contenido en cuestión, tal vez no) como la 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 llamado 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 en el que la guardó".
De esos navegadores que reconocen, 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" durante la visualización (o al menos IE solía ser así, puede haber cambiado hace algunos años).
attachment
podrían ser considerado "mejor no mostrar esto usted mismo" mientrasinline
que "mejor mostrar esto usted mismo si puede". De cualquier manera, la mayoría de los navegadores usarán el valor del nombre de archivo como el nombre sugerido del archivo, pero los usuarios siempre pueden anularlo.