Vamos a comprimir y descomprimir archivos .zip con PHP, usando la clase ZipArchive es posible manipular archivos .zip.
Comprimir y descomprimir archivos puede servir para muchas cosas, por ejemplo ofrecer al usuario la opción de descargar varios de sus archivos en .zip o bien ofrecer la opcion de subir un .zip, después descomprimir y guardar los archivos individuales.
Comprimir
Para comprimir hacemos lo siguiente:
[code language=”php”]$zip = new ZipArchive();
$zip->open("myzip.zip",ZipArchive::CREATE);
$zip->addFile("hola.txt","carpeta/hola.txt");
$zip->addFile("ejemplo.txt","carpeta/ejemplo.txt");
$zip->close();
Tenemos lo siguiente:
- Creamos una instancia de la clase ZipArchive
- Abrimos el archivo que vamos a crear, myzip.zip, este nombre lo pueden cambiar ustedes, se usa el parametro ZipArchive::CREATE para especificar la creación del archivo .zip
- Agregamos un archivo, el primer parámetro es el archivo de origen, es posible especificar la carpeta, el segundo parámetro es el destino, en este caso lo puse dentro de una carpeta llamada carpeta.
- Agregamos otro archivo
- Cerramos el .zip y asi terminamos
Como resultado tendremos un archivo llamado myzip.php con los archivos hola y ejemplo.txt dentro de una carpeta.
Descomprimir
Para descompirmir hacemos lo siguiente:
[code language=”php”]$zip = new ZipArchive();
$zip->open("myzip.zip",ZipArchive::CREATE);
$zip->extractTo("unzip/");
$zip->close();
La explicación seria:
- Creamos una instancia de la clase ZipArchive
- Abrimos el archivo myzip.zip con el parametro ZipArchive::CREATE
- Usamos extractTo para extraer los archivos del archivo myzip.zip, se asigna el parámetro de la carpeta donde vamos a extraer los archivos.
- Cerramos el .zip y asi terminamos
El resultado seria una carpeta con nombre unzip/ con el contenido del archivo myzip.zip
Una vez creado el archivo myzip.zip, si lo abrimos le podemos agregar mas archivos a menos que en lugar de usar ZipArchive::CREATE usemos ZipArchive::OVERWRITE, el cual reescribirá los archivos.