Lenguaje PHP

Cómo descomprimir y leer archivos ZIP con PHP

Cómo descomprimir y leer archivos ZIP con PHP. Si estamos desarrollando un sistema en php y necesitamos descomprimir archivos “.zip” es bien fácil. Solo basta incorporar funciones del lenguaje para que realice dicha tarea.

Punto uno, asegurarnos que en nuestro servidor en su declaración php.ini esté incluida y habilitada la extensión para trabajar con formatos comprimidos tipo zips: (extension=php_zip.dll).

Cómo descomprimir y leer archivos ZIP con PHP

En este artículo veremos cómo descomprimir ficheros en formato ZIP de una manera sencilla y amigable utilizando PHP, un formulario HTML y el framework de estilos Bootstrap para darle la estética a nuestra página. Veremos un par de ejemplos como lograr la descompresión de archivos comprimidos.

ZipArchive::extractTo

ZipArchive::extractToExtraer el contenido del archivo compatible con versiones de php (PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)

Descripción

bool ZipArchive::extractTo ( string $destination [, mixed $entries ] )

Extrae el archivo completo o los ficheros dados en la ruta que se especifique.

En este artículo vamos a ver lo siguiente:

  • Descomprimir un archivo ZIP en un directorio declarado por el programador.
  • Leer y obtener información de los archivos ZIP descomprimidos mediante el PHP.

Ejemplo #1 Extraer ficheros ZIP

<?php
 
     $zip = new ZipArchive;
// Declaramos el fichero a descomprimir, puede ser enviada desde un formulario
     $comprimido= $zip->open(mi_comprimido.zip');
     if ($comprimido=== TRUE) {
// Declaramos la carpeta que almacenara ficheros descomprimidos
         $zip->extractTo('MisArchivos/');
         $zip->close();
// Imprimimos si todo salio bien
         echo 'El fichero se descomprimio correctamente!';
     } else {
// Si algo salio mal, se imprime esta seccion
         echo 'Error descomprimiendo el archivo zip';
     }
 
?>

¿Qué necesito para descomprimir ficheros ZIP con el lenguaje PHP?

Un formulario HTML para cargar el fichero comprimido en formato ZIP

<form enctype="multipart/form-data" method="post" action="Descomprimir.php">

 <div class="form-group">
    <label for="exampleFormControlFile1">Subir archivo ZIP:</label>
    <input required type="file" class="form-control-file" name="zip_file">
  </div>
  <div class="form-group"> 
  <input type="submit" name="submit" value="Subir y Descomprimir" class="btn btn-primary" />
  </div>
     
</form>

Código PHP que reciba los elementos enviados por el formulario con el método POST

<?php
//Verificación de los valores enviados
if ($_FILES["zip_file"]["name"]) 
{
    //obtenemos datos de nuestro ZIP
    $nombre = $_FILES["zip_file"]["name"];
    $ruta = $_FILES["zip_file"]["tmp_name"];
    $tipo = $_FILES["zip_file"]["type"];
 
    // Función descomprimir 
$zip = new ZipArchive;
	if ($zip->open($ruta) === TRUE) 
	{
		//función para extraer el ZIP
		$extraido = $zip->extractTo('MisArchivos/');
		echo $extraido;
		$zip->close();
		
// Fin de mostrar ficheros de carpetas
echo '<br><ul class="list-group">';
echo'<li class="list-group-item">';
echo "Archivos descomprimidos correctamente";
echo'</li></ul>';
	}else {
 echo '<br><ul class="list-group">';
 echo'<li class="list-group-item">';
 echo "Ocurrió un error y el archivo no se pudo descomprimir y/o formato no es ZIP";
 echo'</li></ul>';
}

}
?>
Cómo descomprimir y leer archivos ZIP con PHP
Cómo descomprimir y leer archivos ZIP con PHP

CONCLUSIÓN

Este script es muy sencillo de aplicar y amoldar a nuestras necesidades, no requiere muchos conocimientos en PHP. Sin embargo, se puede usar en una infinidad de proyectos que requieran manejar el formato ZIP.
Les dejare el trabajo completo para que puedan descargar rápidamente e implementar en sus proyectos.

Nota:
No requiere tener una base de datos. Sin embargo, si su proyecto necesita registrar estos datos de descomprimir ficheros no vendría mal almacenar en el gestor de base de datos MySQL.

DESCARGA

Descarga Código Fuente

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

4 comentarios

  1. Hola, con ayuda de tu código extraje el primer zip, quería saber sí hay forma que se extraiga un zip del zip
    Espero me puedan ayudar, Gracias.

  2. Hola Nestor! No soy programador pero estoy buscando una solución para mí empresa, para entregarla al programador. Está buscando la manera de descomprimir los zip de las facturas electrónicas pero cuidando que no contengan virus. ¿Nos puedes recomendar alguna manera?

    1. Saludos Shoropio
      Aqui te dejo la solución para tu inconveniente.
      Fichero a editar Descomprimir.php, linea 75.

      //función para extraer el ZIP, le pasamos la ruta donde queremos que nos descomprima
      $extraido = $zip->extractTo('MisArchivos/');
      //echo $extraido; // Deshabilitar esta opcion para quitar el numero 1
      $zip->close();
      

      Saludos Cordiales.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba