<?php
// Si son demasiados archivos colocamos el tiempo limite en 0 (sin limite)
set_time_limit(0);
/*
@autor : Arthusu
@fecha : 15/03/2015
@descripcion : Compresor de todos los archivos del directorio
@archivo : compresor.php
*/
// definimos las variables (las podemos modificar segun sea nuestro caso)
$nombre_del_archivo_comprimido = "comprimido.zip"; // el nombre del archivo a generar
$ruta_relativa = ""; // el directorio que nos encontremos. Ejemplo: images/algo/ para generar un link correcto
if(phpversion() >= "5.2.0"){ // verificamos que contengan la version correcta para crear archivos zip
$zip = new ZipArchive(); // Creamos un nuevo objeto
if($zip->open($nombre_del_archivo_comprimido,ZIPARCHIVE::CREATE) === TRUE){ // creamos un archivo
$iterator = new RecursiveDirectoryIterator(__DIR__); // recorremos el directorio
$recursiveIterator = new RecursiveIteratorIterator($iterator); // recorremos los directorios dentro de otros directorios y asi sucesivamente
foreach($recursiveIterator as $entry){ // recorremos los archivos
if(is_file($entry->getRealPath())){ // verificamos que sea archivo
// debug
//echo $entry->getRealPath()."\n";
$zip->addFile($entry->getRealPath()); // lo agregamos al zip
}
}
// mostramos un enlace con los archivos
echo $zip->numFiles .' archivos comprimidos: <a href="http://'.strip_tags($_SERVER["HTTP_HOST"]. "/" . $ruta_relativa . $nombre_del_archivo_comprimido).'">Descargar Archivo</a>';
}else{
// si no se crea el archivo mostramos el error
echo "Ha ocurrido un error: ".$zip->getStatusString();
}
// cerramos el archivo zip
$zip->close();
}else{
// si la version no es correcta mostramos un mensaje
echo "Su version de PHP debe ser 5.2.0 o superior";
}
?>
El uso es bastante facil.
1.- Subir el archivo a la carpeta que quieras comprimir
2.- Ejecutar el archivo en la url: ejemplo.com/compresor.php
3.- Te generara un link donde descargar el archivo
Hay dos variables que puedes modificar dentro del archivo:
$ruta_relativa - Esta variable la modificas en caso de que te encuentres en una ruta relativa en alguna carpeta de la web, ejemplo: jquery/imagenes/, con eso nos generaria un link como el siguiente: ejemplo.com/jquery/imagenes/comprimido.zip
$nombre_del_archivo_comprimido - Aqui puedes especificar el nombre del archivo resultante
Nota: Otra cosa a tomar en cuenta es que el script tarda dependiendo de que tantos archivos tenga que guardar o recorrer, puede tardar varios minutos dependiendo de que tantos archivos contenga tu sitio.
Y bueno eso es todo espero que la herramienta les sea de utilidad.
No hay comentarios:
Publicar un comentario