La disposición de contenido es una extensión del protocolo MIME, que instruye al agente de usuario MIME para mostrar archivos adjuntos. Cuando Internet Explorer recibe la cabecera, activa el cuadro de diálogo para descargar archivos, y su cuadro de nombre de archivo se llena automáticamente con el nombre especificado en la cabecera. (Cabe señalar que esto es causado por el diseño; No puedes usar esta función para guardar un documento en el ordenador de un usuario sin preguntarle dónde guardarlo. )
Cuando el servidor envía un archivo al navegador cliente, si es un tipo de archivo soportado por el navegador, generalmente se abrirá por defecto usando el navegador, como txt, jpg, etc., que se mostrará directamente en el navegador; si es necesario que el usuario guarde, es necesario usar Content-Disposition para procesarlo, la clave es añadir adjunto:
Response.AppendHeader("Content-Disposition","attachment; filename=FileName.txt");
Nota: Esto te pedirá guardar o abrir, y aunque decidas abrirlo, lo abrirá con el programa asociado como el Bloc de Notas, en lugar de que por IE lo abra directamente.
La disposición de contenido consiste en proporcionar un nombre de archivo predeterminado cuando el usuario quiere guardar el contenido solicitado como archivo. Las definiciones específicas son las siguientes:
disposición de contenido = "disposición de contenido" ":"
tipo de disposición *( ";" disposición-parm )
tipo de disposición = "adhesión" | Token de extensión disp
disposición-parm = nombre de archivo-parm | disp-extension-parm
Nombredel archivo-parm = "nombre del archivo" "= cadena comillada
disp-extension-token = token
disp-extension-parm = token "=" ( token | cadena comillada )
Así que podemos ver ejemplos específicos de lo anterior:
Cache-Control:private
Content-Disposition:attachment; filename=Index1.png
Content-Length:328462
Content-Type:image/png
Date:Fri, 14 Oct 2016 01:08:04 GMT
Server:Microsoft-IIS/8.0
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:5.2
X-Powered-By:ASP.NET
Content-Disposition: attachment; filename=“filename.xls”
Por supuesto, el parámetro de nombre de archivo puede contener información de ruta, pero User-Agnet ignorará esta información y solo usará la última parte de la información de ruta como nombre de archivo. Si usas este encabezado en la aplicación de respuesta/flujo de octetos, significa que no quieres mostrar el contenido directamente, pero aparecerá un cuadro de diálogo de "descarga de archivo", y entonces depende de ti decidir si "abrir" o "guardar".
Notas:
1. Al usar Content-Disposition en el código para asegurarse de que el navegador abra el cuadro de diálogo de descarga. response.addHeader("Content-Disposition","attachment"); Asegúrate de no haber hecho nada para desactivar la caché del navegador. De la siguiente manera:
response.setHeader("Pragma", "No-cache"); response.setHeader("Control-caché", "No-caché"); response.setDateHeader ("Expires", 0);
|