Comprimir archivos con PHP

Enero 20, 2007

Para comprimir archivos con php, de manera sencilla podemos descargar la clase AlfaZoneSoft Zip Lib. Un ejemplo de su uso es:

  1. <?php
  2.  
  3. //Incluimos la clase
  4. require('zip.lib.php');
  5. //La instanciamos
  6. $zip = new zip();
  7.  
  8. $path = 'ruta donde se encuentra el archivo a comprimir';
  9. $name = 'nombre del archivo comprimido, podemos usar / para crear una estructura de directorios';
  10.  
  11. //Anadimos el archivo a comprimir
  12. $zip->addFile($path, $name);
  13.  
  14. $pathSave = 'Ubicacion/nombre.zip';
  15. //Guargamos el archivo
  16. $zip->saveZip($pathSave);
  17.  
  18. //Si desaemos inmediatamente descargar el archivo compreso
  19. $zip->downloadZip($pathSave);
  20.  
  21. ?>

Notemos que el nombre de la clase es Zip, esto puede generar problemas dado que existe una extension de APACHE que usa este mismo nombre, si la tenemos habilitada el script anterior generara un error, para solucionarlo, solo tenemos que cambiar el nombre de la clase.

Podemos descargar zipArchive una modificación hecha por UnderMedia para solucionar este problama

Aunque la clase es muy buena tiene una limitante, no posee un método para comprimir todo el contenido de un directorio especifico.

Si deseamos comprimir el contenido de un directorio completo podemos usar las funciones opendir() y readdir() asi:

  1. <?php
  2. require('zipArchive.class.php');
  3. $zip = new zipArchive();
  4.  
  5. $dir = "directorio que deseamos comprimir";
  6.  
  7. $directorio=opendir($dir);
  8. while ($archivo = readdir($directorio)) {
  9. if(!is_dir("$dir/$archivo"))
  10. $zip->addFile($dir.'/'.$archivo, "image/$archivo");
  11. }
  12. closedir($directorio);
  13.  
  14. $pathSave = 'nombre.zip';
  15. $zip->saveZip($pathSave);
  16. $zip->downloadZip($pathSave);
  17. ?>

Descargar el código: zipDir

 

Entrada almacenada bajo: PHP

Este post ha sido visto 7412 veces

5 Comentarios Añade tu comentario

  • 1. juan david zapata  |  Septiembre 26, 2007 at 5:00 pm

    Me descargue los dos archvos tanto la libreria como el archvo de ejemplo y me saca saca un error que me dice que no se encuentra la funcion saveZip.

    Si uds me pudieran facilitar el archivo ‘zip.lib.php’ me serviria mucho ya que el que me descargo no trae esa funcion dentro del codigo fuente.

    Muchas gracias

  • 2. Pablo Veintimilla  |  Septiembre 27, 2007 at 11:45 am

    Hola Juan gracias por tu comentario, para usar el ejemplo por favor descarga zipArchive una modificacion hecha por UnderMedia, para corregir conflictos de nombres con la clase original.
    Gracias a tu comentario incluí este archivo, lo puedes descargar desde el mismo post.

    Saludos!

  • 3. carlos Sanitillán  |  Diciembre 07, 2007 at 5:44 pm

    Hola, el código que comparten, esta bien, pero al comprimir los archivos que se le señala, los hace pero sin la data que tienen ellos, por ejemplo yo estoy comprimiendo txt’s , con datos, pero solo suben los archivos vacios, agradecere me contesten por que pasa esto… gracias……..

  • 4. bruno  |  Junio 09, 2008 at 10:59 am

    Muy buena clase me sirvio muchismo….. al generar el archvio ZIP se agrega un TXT zip info sabes como puedo modificarlo?

  • 5. Oscar  |  Septiembre 01, 2008 at 11:32 pm

    Exelente!!!

Envia comentario

Obligatorio

Obligatorio

Algunas etiquetas HTML estan permitidas:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Conectate a este comentario  |  Suscribete a los comentarios via RSS Feed



Mira tambien

Feeds

 Suscribirse por feed

Suscribirse por mail