2009-06-24 10 views
9

tengo que ser capaz de tener un subdirectorio de imágenes de todo el PNG para ser descargado en lugar de abrirse en la ventana del navegador. Estoy usando IIS para el servidor web.Fuerza PNG para descargar en lugar de abrir en el navegador con IIS

¿Hay una manera de forzar un PNG ser descargable?

+0

Serverfault.com es probablemente un mejor lugar para hacer esta pregunta. – Nate

+1

¡Bueno, él no sabía que nothisfault.com! –

Respuesta

1

Todas las soluciones que se han intentado hacerlo de modo que va a descargar en otros navegadores excepto IE. IE está tratando de ser "útil" y decide lo que cree que mejor servirá al cliente, en este caso es mostrar el archivo png en el navegador.

siempre existe la manera programática de hacer esto ya se ha señalado. Pero no estaba buscando esa ruta.

Al final me cremallera individualmente hasta los 67 archivos png y ligada a ellos. No es bonito, pero funciona.

Gracias por la ayuda.

+0

Gracias. Funcionó perfectamente con el servidor 2008 y con IIS 7.5 probado en IE 9, 8 y Firefox, etc. –

2

No se puede servir directamente si el PNG, pero si se utiliza ASP, se puede añadir:

Response.AddHeader("Content-Disposition", "attachment"); 
1

Tienes que enviar esta cabecera al navegador:

Content-Disposition:attachment; filename="downloaded.pdf" 

I no tiene idea de cómo hacer esto usando IIS.

27

Como los otros críticos han dicho, es necesario agregar la cabecera Content-Disposition de HTTP, con un valor de embargo, a la respuesta HTTP generados por IIS al servir los archivos PNG en cuestión.

No está seguro de qué versión de IIS que utiliza no son sino:

IIS6

  1. En el Administrador de IIS, seleccione el directorio con los archivos PNG y abrir el diálogo Propiedades
  2. Haga clic en la ficha Encabezados HTTP .
  3. En la sección Encabezados HTTP personalizados, haga clic en Agregar.
  4. Aparece un cuadro de diálogo. En el campo "Nombre del encabezado personalizado", ingrese "Disposición del contenido". En el campo "Valor personalizado-cabecera, introduzca "Anexo"
  5. Es posible que tenga que reiniciar IIS (iisreset)

Para IIS7:.

  1. en el Administrador de IIS, seleccione el directorio con el Archivos PNG y seleccione la vista Características.
  2. Haga doble clic en el elemento Encabezados de respuesta HTTP y luego elija la opción Agregar en el menú de la derecha
  3. Aparecerá un cuadro de diálogo. En el campo "Nombre", escriba "Contenido-disposición ". En el campo" Valor ", ingrese" Adjunto archivo".
  4. Es posible que tenga que reiniciar IIS (iisreset)

alternativa, colocar este web.config en la carpeta con los archivos:

<?xml version="1.0"?> 
<configuration> 
    <system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <clear /> 
     <add name="Content-Disposition" value="Attachment" /> 
     </customHeaders> 
    </httpProtocol> 
    </system.webServer> 
</configuration> 

Esto debería forzar el PNG sirve a partir de ese directorio a ser descargable .

+1

Esto no funciona con IE. – RedWolves

+1

Hmm, he tenido problemas con este encabezado en IE en el pasado si los nombres de archivo contenían caracteres reservados de URI, por ejemplo ':'. Me alegro de que haya encontrado una solución de todos modos. –

+0

No es necesario restablecer IIS. Todos los cambios de web.config funcionan sobre la marcha. Esto también funciona bien con IE9 e IE10. De hecho, todos los navegadores que probé (IE, Chrome, FF y Safari) funcionan bien para JPG, PNG, MP3 y MPG. –

0

Probablemente, mi respuesta es anticuado, pero es de esperar que puede ser útil para alguien ...

Como los otros críticos han dicho, es necesario agregar el encabezado de respuesta HTTP 'Content-Disposition'.

El problema podría aparecer si no puede usar el Administrador de IIS y tiene que usar la línea de comandos.

lo tanto, si es necesario agregar este encabezado de respuesta HTTP bonita utilizando única línea de comandos, puede utilizar dicha construcción:

%systemroot%\system32\inetsrv\APPCMD set config "Default Web Site/path/to/images" /section:httpProtocol /+customHeaders.[name='Content-disposition',value='Attachment'] 

Se añade encabezado de respuesta HTTP 'Content-Disposition' para su '/ ruta/a/images 'carpeta de su' Sitio web predeterminado '.

Esto puede ser útil en caso de que realice una configuración automática de su IIS con un par de scripts o archivos BAT/CMD.

Cuestiones relacionadas