He estado buscando como forzar la descarga de un zip, y lo único que consigo en localhost es que me descargue el archivo dentro del proyecto...en vez de descargarlo directamente o mostrar la tipica ventana del explorador de windows para guardarlo.
El caso es que al lanzar la web en mi dominio no hace nada...muestra el mensaje de que el zip se ha descargado (mensaje que yo muestro al realizar la descarga correctamente), pero sin embargo no descarga nada.
He buscado ya en muchos foros y webs y todas realizan la descarga de la misma forma, pero no me funciona. Gracias por la ayuda, dejo el código aquí:
Código PHP:
//Cambiamos el valor de tiempo de ejecución a 300 segundos (5 minutos)
ini_set("max_execution_time", 300);
# create new zip opbject
$zip = new ZipArchive();
$zip->open("calibraciones.zip", ZipArchive::CREATE);
$nombre = basename("calibraciones.zip");
//Miramos que archivos quiere descargar el usuario y los introducimos en el zip
if ($referencias == 1){
//Añadimos un directorio vacio llamado "Referencias"
$zip->addEmptyDir("Referencias");
//Función encargada de descargar las referencias y meterlas en el directorio "Referencias"
DescargarReferencias($ids, $rutas, $introducidos, $zip);
}
if ($patrones == 1){
//Añadimos un directorio vacio llamado "Patrones"
$zip->addEmptyDir("Patrones");
//Funcion encargada de descargar los patrones y meterlos en el directorio "Patrones"
DescargarPatrones($ids, $introducidos, $zip, $nombresDePatrones, $rutasDePatrones);
}
if ($procedimientos == 1){
//Añadimos un directorio vacio llamado "Procedimientos"
$zip->addEmptyDir("Procedimientos");
//Función encargada de descargar los procedimientos y meterlos en el directorio "Procedimientos"
DescargarProcedimientos($ids, $introducidos, $zip, $nombresDeProcedimientos, $rutasDeProcedimientos);
}
//Cerramos el zip
$zip->close();
//Si no se ha introducido ningún archivo en el zip porque no se han encontrado las rutas..no forzamos la descarga
if ($introducidos != 0){
//Mandamos el zip al navegador para realizar la descarga
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Length: ".filesize($nombre));
header('Content-disposition: attachment; filename='.$nombre);
header('Content-type: application/zip');
readfile($nombre);
}