Como crear archivos ZIP con PHP

En este post veremos como crear un archivo .ZIP con PHP, para ello vamos a utilizar la extension ZIP que se incluye con PHP y que nos permite leer y escribir archivos en formato ZIP, asi como los archivos contenidos en el.

Para trabajar con esta extension debes de tener en cuenta algunos detalles como por ejemplo que se recomienda que tengas instalado PHP 5.2.0 o superior ya que para las versiones anteriores de php ya no esta siendo mantenida. Si estas trabajando con windows debes verificar que php_zip.dll este habilitado dentro del archivo php.ini. Bueno ahora veamos un ejemplo de su funcionamiento.

Lo primero que tenemos que hacer es crear un objeto de la clase ZipArchive.

$enzipado = new ZipArchive();

Posteriormente creamos el archivo con el metodo open, dicho metodo recibe dos parametros el primero es el nombre del archivo y el segundo el modo en el cual se va a abrir, estos modos pueden ser: ZIPARCHIVE::OVERWRITE, ZIPARCHIVE::CREATE, ZIPARCHIVE::EXCL,ZIPARCHIVE::CHECKCONS

 

if ($zip->open("codedrinks.zip", ZIPARCHIVE::CREATE )!==TRUE) {

    exit("No se pudo abrir el archivo\n");

}

 

 Ahora solo tenemos que elegir los archivos que vamos a agregar al archivo .zip, esto lo podemos hacer el metodo addFile el cual como su nombre lo indica agrega un archivo, a este metodo le pasamos dos parametros el primero es la ruta del archivo que deseamos agregar y el segundo indica el nombre que tendra ese archivo dentro del archivo .zip, este parametro es opcional.

$enzipado->addFile('leeme.txt');

$enzipado->addFile('energy.jpg');

Otra forma de agregar un archivo es con el metodo addFromString el cual agrega un archivo usando su contenido. Este metodo recibe dos parametros el primero es el nombre que tendra dentro del archivo .zip y el segundo el contenido que se va a agregar al archivo.

$enzipado->addFromString('contenido.txt', 'Fue creado con addFromString');

Una vez que hayamos terminado de agregar los archivos cerramos el archivo.zip

$enzipado->close();

Si queremos forzar la descarga de este archivo agregamos el header Content-Disposition

// Tipo de archivo

header("Content-type: application/zip");

//El archivo se va a llamar descarga.zip
header("Content-Disposition: attachment; filename=codedrinks.zip");

// HTTP/1.1
header("Cache-Control: no-cache, must-revalidate"); 

header("Expires: 0");

// El archivo original
readfile("codedrinks.zip");

Puedes encontrar mas informacion en la documentacion de php acerca de la extension ZIP , abajo les dejo el codigo completo.

<?php

	$enzipado = new ZipArchive();

	if ($enzipado->open("codedrinks.zip", ZIPARCHIVE::CREATE )!==TRUE) {

		exit("No se pudo abrir el archivo\n");

	}

	$enzipado->addFile('leeme.txt');

	$enzipado->addFile('energy.jpg');

	$enzipado->addFromString('contenido.txt', 'Fue creado con addFromString');

	$enzipado->close();

	header("Content-type: application/zip");

	header("Content-Disposition: attachment; filename=descarga.zip");

	header("Cache-Control: no-cache, must-revalidate");

	header("Expires: 0");

	readfile("codedrinks.zip");

?>

Un comentario en “Como crear archivos ZIP con PHP”

  1. Me funciono a la perfección¡¡¡ Muchas Gracias¡

Deja un comentario