Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/01/2015, 01:28
Avatar de adrirs11
adrirs11
 
Fecha de Ingreso: diciembre-2012
Ubicación: BCN
Mensajes: 107
Antigüedad: 11 años, 4 meses
Puntos: 1
Forzar descarga zip, desesperado!!!

Buenas a todos.

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);
    } 

Última edición por adrirs11; 29/01/2015 a las 02:03