zipfile.php.tar

En esta ocasión veremos la forma de crear archivos comprimidos en formato ZIP. Para este ejemplo utilizaremos la clase zipfile escrita por Eric Mueller y muy bien explicada en Creating ZIP files with PHP.

Descargando la clase zipfile

Lo primero es descargar la clase zipfile desde zipfile.inc.txt y renombrarla a zipfile.php. Esta clase tiene dos metodos add_dir() y add_file() que permite agregar una carpeta o un archivo al zip que se esta creando.

Creando nuestro primer ZIP

Lo primero es incluir el archivo recién descargado, luego de ello creamos una instancia de la clase, para este ejemplo a la instancia lo llamamos $zipfile. Luego de ello agregamos un archivo de la siguiente forma.

require ("zipfile.php");
$zipfile = new zipfile();
$zipfile->add_file(implode("",file("img01.jpg")), "foto.jpg");

Nótese que estamos agregando un archivo llamado img01.jpg y al momento de incluirlo en el zip lo estamos renombrando a foto.jpg. Hasta este punto hemos creado un archivo zip, el siguiente paso es enviarlo al cliente, para ello agregamos headers indicando el tipo de archivo y finalmente imprimimos el archivo:

require ("zipfile.php");
$zipfile = new zipfile();
$zipfile->add_file(implode("",file("img01.jpg")), "foto.jpg");
header("Content-type: application/octet-stream");
header("Content-disposition: attachment; filename=zipfile.zip");
echo $zipfile->file();

El resultado del ejemplo lo pueden ver en http://samples.unijimpe.net/php-zip/.

Agregando carpetas al ZIP
En el caso que agregamos varios archivos y deseamos agruparlas en una carpeta, podemos utilizar el metodo add_folder. Luego de ello agregamos los archivos a la carpeta de la siguiente forma:

require ("zipfile.php");
$zipfile = new zipfile();
$zipfile->add_dir("img/");
$zipfile->add_file(implode("",file("img01.jpg")), "img/01.jpg");
$zipfile->add_file(implode("",file("img02.jpg")), "img/02.jpg");
$zipfile->add_file(implode("",file("img03.jpg")), "img/03.jpg");
header("Content-type: application/octet-stream");
header("Content-disposition: attachment; filename=fotos.zip");
echo $zipfile->file();

Como ven agregar carpetas y multiples archivos es muy sencillo, incluso se pueden renombrar los archivos al momento de agregarlos al archivo zip. El resultado de este ejemplo lo pueden ver en: http://samples.unijimpe.net/php-zip/zipfolder.php

2 Responses to “Crear archivos ZIP con PHP”

  1. You may add more files by repeating the “$zipfile -> addFile” script with more files. The above will send the file straight to the user (not create a file on your server).

  2. Discount nike shoes on sale, benchmark for both the interview process and for the advancement into higher level job profiles