Crear archivos ZIP con PHP

Descargando la clase zipfile

Lo primero es descargar la clase zipfile desde zipfile.inc.txt y renombrarla azipfile.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.

  1. require (“zipfile.php”);
  2. $zipfile = new zipfile();
  3. $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:

  1. require (“zipfile.php”);
  2. $zipfile = new zipfile();
  3. $zipfile->add_file(implode(“”,file(“img01.jpg”))“foto.jpg”);
  4. header(“Content-type: application/octet-stream”);
  5. header(“Content-disposition: attachment; filename=zipfile.zip”);
  6. 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:

  1. require (“zipfile.php”);
  2. $zipfile = new zipfile();
  3. $zipfile->add_dir(“img/”);
  4. $zipfile->add_file(implode(“”,file(“img01.jpg”))“img/01.jpg”);
  5. $zipfile->add_file(implode(“”,file(“img02.jpg”))“img/02.jpg”);
  6. $zipfile->add_file(implode(“”,file(“img03.jpg”))“img/03.jpg”);
  7. header(“Content-type: application/octet-stream”);
  8. header(“Content-disposition: attachment; filename=fotos.zip”);
  9. echo $zipfile->file();

Etiquetas:

Deja un comentario