En: PHP
20 ene 2007
Para comprimir archivos con php, de manera sencilla podemos descargar la clase AlfaZoneSoft Zip Lib. Un ejemplo de su uso es:
<?php//Incluimos la claserequire('zip.lib.php');//La instanciamos$zip = new zip();$path = 'ruta donde se encuentra el archivo a comprimir';$name = 'nombre del archivo comprimido, podemos usar / para crear una estructura de directorios';//Anadimos el archivo a comprimir$zip->addFile($path, $name);$pathSave = 'Ubicacion/nombre.zip';//Guargamos el archivo$zip->saveZip($pathSave);//Si desaemos inmediatamente descargar el archivo compreso$zip->downloadZip($pathSave);?>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:
<?phprequire('zipArchive.class.php');$zip = new zipArchive();$dir = "directorio que deseamos comprimir";$directorio=opendir($dir);while ($archivo = readdir($directorio)) {if(!is_dir("$dir/$archivo"))$zip->addFile($dir.'/'.$archivo, "image/$archivo");}closedir($directorio);$pathSave = 'nombre.zip';$zip->saveZip($pathSave);$zip->downloadZip($pathSave);?>Descargar el código: zipDir
Este post ha sido visto 22984 veces
Inspiración y Determinación |
En Blog UnderMedia se recopilan y publican periódicamente noticias, artículos o comentarios generados dentro de UnderMedia S.A.
12 nomentarios para Comprimir archivos con PHP
juan david zapata
septiembre 26th, 2007 at 17:00
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
Pablo Veintimilla
septiembre 27th, 2007 at 11:45
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!
carlos Sanitillán
diciembre 7th, 2007 at 17:44
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……..
bruno
junio 9th, 2008 at 10:59
Muy buena clase me sirvio muchismo….. al generar el archvio ZIP se agrega un TXT zip info sabes como puedo modificarlo?
Oscar
septiembre 1st, 2008 at 23:32
Exelente!!!
Carlos
abril 2nd, 2009 at 16:57
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.
Alomaximo
febrero 19th, 2010 at 12:47
Justo lo que buiscaba, graciasssss compatriota
Bere
marzo 12th, 2010 at 14:26
Hey gracias me ha servido, pero quisiera añadirle seguridad. Se le puede colocar una contraseña al momento de comprimirlo?
Alvaro gonzalez
mayo 22nd, 2010 at 23:31
Hola muchas gracias sirvio de mucho , el problema ahora es otro,,
puedo comprimir y descargar una carpeta con sus archivos al interior, como lo hago para que las carpetas que estan dentro de la carpeta principal se compriman tambien y las que esten dentro de estas ,??
me ayudarias mucho ,, de antemano gracias
Sup
junio 14th, 2010 at 17:19
como se puede hacer para comprimir el contenido del directorio en partes, en varios .zip ? ya que mi server me limita el uso de memoria y son muchos los archivos a comprimir…
gracias.
wilson
junio 15th, 2010 at 16:03
tengo la misma inquietud de alvaro. funciona bien pero no comprime las carpetas al interior. si alguien sabe por favor como se hace
Fran
julio 17th, 2010 at 06:51
Hola,
Mi pregunta es, ¿cómo se puede eliminar el archivo una vez se haya terminado la descarga? Es decir, cuando se comprime el directorio, el archivo se autocoloca en la raíz del sitio y aunque se descargue sigue estando ahí…
¿Alguna sugerencia? Gracias chaval, me ha sido de gran ayuda.