Comprimir archivos ZIP con PHP. En esta entrada vamos a explicar cómo comprimir archivos usando un formulario HTML. En el cual, si presionas un botón se genera la compresión de los archivos y la descarga respectiva del documento comprimido. Si embargo, no basaremos en la clase ZipArchive del famoso lenguaje de programación PHP.
Comprimir archivos ZIP con PHP: Ejemplo completo
La clase ZipArchive de PHP
Cabe resaltar que esta clase está disponible en las versiones de PHP que detallaremos a continuación
- La versión de PHP 5, mayores o igual a 5.2.0
- PHP 7 o superior
- PECL zip Mayor o igual a 1.1.0
Sintaxis de la clase ZipArchive
ZipArchive { /* Propiedades */ int $status; int $statusSys; int $numFiles; string $filename; string $comment; /* Métodos */ bool addEmptyDir ( string $dirname ) .... .... }
¿Cómo funciona este ejemplo?
Primero tenemos que tener una carpeta llamado «mis-archivos» o en todo caso si no la tenemos la creamos en nuestro servidor web. Sin embargo, todo el contenido de esa carpeta será los elementos que queremos comprimir, pueden ser imágenes, documentos de WORD, Excel, Power Point, etc.
Partes del sistema
Veremos la estructura y secuencia de como poder comprimir varios archivos que tenemos en nuestro servidor web.
Archivo Index.php
Sera el encargado de realizar toda la tarea y la compresión de los ficheros. En el siguiente código declaramos un array y lo poblamos con los archivos que existen en nuestra carpeta.
$adarchivos = array(); // Creamos el array y declaramos los ficheros de la carpeta $adarchivos = array( 'mis-archivos/01.jpg', 'mis-archivos/02.jpg' );
Le generamos un nombre al archivo comprimido
// Declaramos el nombre del archivo comprimido $nombre_zip = 'mi-archivo-comprimido.zip';
Agregamos los ficheros a comprimir
// Agregamos los archivos a comprimir foreach ($adarchivos as $nuevo){ $mizip->addFile($nuevo, str_replace('download/', '', $nuevo)); }
Una vez creado el fichero comprimido podemos forzarlo para que el navegador lo descargue de manera automática.
// Generar la descarga en el navegador header('Content-Type: application/zip'); header('Content-disposition: attachment; filename='.$nombre_zip); header('Content-Length: ' . filesize($nombre_zip)); readfile($nombre_zip);
Creamos un formulario que al presionarlo nos genere el fichero comprimido. Sin embargo, como ya he mencionado usaremos una condicional PHP para activarlo.
<form action="" method="post"> <input name="Generar_zip" class="btn btn-primary" type="submit" value="Comprimir Archivos"> </form>
Declaramos al inicio del documento la condicional para generar los ficheros ZIP
// validamos el envio el formulario para que se active la creacion del comprimido if(isset($_POST["Generar_zip"])){ ...... }
CONCLUSIÓN
Recordemos que PHP trabaja muy bien con formatos ZIP, puede comprimir y descomprimir ficheros PHP. Por lo tanto, si desean comprimir ustedes pueden aplicar este modelo que esta descrito en este artículo. Pueden modificar el código de acuerdo a sus necesidades.
Si desean saber más cosas sobre esta clase ZipArchive, no duden en visitar la web oficial de PHP a tal dirección.