<?php
//drvy
$carpeta = 'files/';
$permitidos = array('php','css'); $archivo_final = 'descargas.zip'; // .zip *
$zip = new ZipArchive();
if ($zip->open($archivo_final, ZIPARCHIVE
::CREATE)!=TRUE){die('No se ha podido crear un archivo zip!');}
function archivar($carpeta,$permitidos,$zip)
{
foreach($carpetas as $archivo)
{
if (($archivo == '.')||($archivo == '..')){}
elseif (is_dir($carpeta.'/'.$archivo)){ archivar($carpeta.'/'.$archivo,$permitidos,$zip);
}else{
if (in_array($extension, $permitidos)) { $zip->addFile($carpeta.'/'.$archivo,$carpeta.'/'.$archivo);
}
}
}
}
archivar($carpeta,$permitidos,$zip);
$zip->close();
echo 'Listo';
?>
Adapte un
script que encontré en opendir() que permitia explorar todos los directorios, sub-directorios....
y las ovejas de las ovejas de una carpeta.
Lo malo es que, una vez creado el ZIP al explorarlo las carpetas no están marcadas como tal pero si son accesibles y funciona todo bien.
PD: Ten en cuenta que si hay muchos directorios y archivos es posible que el
max_execution_time se sobre pase y por lo tanto no conseguir nada xD.
Saludos