Pregunta

Yo estaba tratando de implementar un "enlace de descarga" y ponga al lado de uno de mi tabla de informe para que los usuarios pueden descargar un archivo CSV y abrirlo con aplicaciones como Excel.

Los registros se generan en función dinámicamente en la consulta realizada por los usuarios.

Así que en algún lugar de mi regulador hay algo como:

response.headers['Content-Type'] = 'text/csv'
response.headers['Content-Disposition'] = 'attachment; filename=xxx.csv'
return response.stream(dynamically_generated_csv, request=request)

Esto funciona tanto en Firefox y Chrome, pero falla en IE.

Cuando imprimo las cabeceras de respuesta, he encontrado que varias cabeceras se añadieron a mi respuesta por web2py: 'Expira', 'Cache-Control', etc ...

Y cuando se quita el encabezado 'Cache-Control' haciendo lo siguiente:

del response.headers['Cache-Control']

Funciona en IE.

Así que parece que IE tiene problemas con el tráfico de un archivo descargable con el conjunto 'Cache-Control' a cierto valor.

Ahora, mi pregunta es:

  • ¿Por qué web2py añadir estas cabeceras de respuesta, de manera implícita? y tal vez sin una manera de hacerla estallar?

  • ¿hay algún efecto secundario cuando se borra el 'Cache-Control' cabecera de esta manera?

Gracias de antemano.

¿Fue útil?

Solución

No estoy seguro de lo que son cabeceras de control de caché / estaban siendo enviado, pero IE tiene un error con los archivos descargados al igual que está experimentando.

Para IE, debe habilitar el almacenamiento en caché . Cuando IE carga archivos (por ejemplo, archivos de Excel), en Excel, que los carga desde el directorio de caché, por lo tanto si no se almacena en caché, Excel (o su otra aplicación) no podrá cargar el archivo.

Eric Ley (MSFT) sobre el tema: http://blogs.msdn.com/ieinternals/archive/2009/10/02/Internet-Explorer-cannot-download-over-HTTPS-when-no- cache.aspx

Actualizar : Sin embargo, si sólo quiere forzar la descarga ... por ejemplo, IE no tiene carga el archivo de Excel dentro de la ventana de IE ... a continuación, asegúrese de ajustar las cabeceras completas para la fijación.

//PHP style
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="downloaded.pdf"');

Otros consejos

Es el enlace de descarga usando HTTPS (SSL)? Si es así, entonces IE no puede manejar la descarga si está configurado para ser almacenado en caché. Este es un problema conocido con el IE.

Esto no responde a su pregunta, pero resuelve, espero, problema original.

Yo sólo añadiría marca de tiempo (algo bastante único) a la cadena de consulta de un enlace a un archivo CSV. Se ayudó a mí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top