Ene 20

Escrito por: Pablo Veintimilla

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

Otros post


Este post ha sido visto 15810 veces

8 Respuestas to “Comprimir archivos con PHP”

  1. juan david zapata Dice:

    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 Dice:

    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 Dice:

    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 Dice:

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

  5. Oscar Dice:

    Exelente!!!

  6. Carlos Dice:

    No me funciona, intente por todos los metodos y el archivo que genera es un ZIP que tiene dentro un archivo vacio. El archivo que quiero comprimir es un archivo de texto de 5 megas.

  7. Alomaximo Dice:

    Justo lo que buiscaba, graciasssss compatriota

  8. Bere Dice:

    Hey gracias me ha servido, pero quisiera añadirle seguridad. Se le puede colocar una contraseña al momento de comprimirlo?

Escribe tú comentario

Switch to our mobile site