Headers, PHP, Archivo zip e Internet Explorer

Para que no se me olvide porque me ha costado un montón de tiempo llegar a esta solución y por si a alguien le sirve:


if (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE')) {
header("Content-type: application/zip");
} else {
header("Content-type: application/octet-stream");
}
header("Content-disposition: attachment; filename=\"documentos.zip\"");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
header("Pragma: public"); // Sin esto el IE no funciona

// cargar el archivo a enviar
readfile($zipname);

Este es el código para enviar un archivo zip para su descarga. En mi caso, este script genera ese archivo .zip a partir de unos documentos y una vez generado, lo envía al navegador para su descarga.

Como siempre, todo funcionaba correctamente hasta que lo probé en Internet Explorer… Y tras mucho “goglear” y probar combinaciones, esta ha sido la que me ha funcionado en todos los navegadores.

Y además, aprovecho para escribir algo en el blog que con tanto Twitter y tanto Facebook está “abandonao” :)

Publicado por

manuel

Me dedico al desarrollo de aplicaciones. Principalmente trabajo con XHTML, CSS, Javascript, XML, JSON, PHP, MySQL, Linux/MacOS X y Flash actionscript. Intento siempre trabajar con estándares y simplificar el desarrollo y las aplicaciones finales con el objetivo de orientarlas al usuario (que sean útiles y faciliten el trabajo).

Un comentario en “Headers, PHP, Archivo zip e Internet Explorer”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *