destacados

Gabriel Da Silva

Portafolio del ilustrador y director de arte brasileño, aunque afincado en Madrid, Gabriel Da Silva.

B&W Helmut Newton

Selección de fotografías en blanco y negro de uno de los fotógrafos más conocidos de las últimas décadas, Helmut Newton.

Judith Erwes

Fotógrafa afincada en Londres con un estilo que combina la moda, el humor y la estética retro.

Jody Rogac

Nacida en Inglaterra y criada en Canadá, Jody Rogac en la actualidad vive y trabaja en Brooklyn. Sus trabajo ha obtenido diversos galardones.

Publicaciones

PclZip: clase para trabajar con ficheros zip en php

, , 16/01/2009 07:30:00

PclZip es una clase que puede ser utilizada para crear y extraer ficheros zip. Puede crear ficheros ZIP desde una lista de ficheros y también puede incluir o excluir directorios de la lista de ficheros. La clase también dispone de métodos para añadir archivos a ficheros zip creados, duplicar ficheros, unirlos o eliminarlos.El uso es bastante sencillo. En el siguiente ejemplo se crea un fichero "Nombre_Fichero.zip" a partir de cuatro ficheros de texto.

<?php
require_once('pclzip.lib.php');$ListaArchivos = "texto1.txt,texto2.txt,texto3.txt,texto4.txt";
$archivo_zip = new PclZip('Nombre_Fichero.zip');

if ($archivo_zip->create($ListaArchivos) == 0) {
     die('Error : '.$archivo_zip->errorInfo(true));
}
?>
Con el método listContent() podemos obtener un listado con los ficheros incluidos en el zip y los detalles para cada uno de ellos. Ejemplo:
<?php
require_once('pclzip.lib.php');

$ListaArchivos = "texto1.txt,texto2.txt,texto3.txt,texto4.txt";
$archivo_zip = new PclZip('Nombre_Fichero.zip');

// CREAMOS EL ZIP
if ($archivo_zip->create($ListaArchivos) == 0) {
      die('Error : '.$archivo_zip->errorInfo(true));
}

// VEMOS EL CONTENIDO DEL ZIP
if (($list = $archivo_zip->listContent()) == 0) {
      die("Error : ".$archivo_zip->errorInfo(true));
}
for ($i=0; $i<sizeof($list); $i++) {
   for(reset($list[$i]); $key = key($list[$i]); next($list[$i])) {
      echo "File $i / [$key] = ".$list[$i][$key]."<br>";
}
   echo "<br>";
}
?>

Lo que nos devolvería algo como:


File 0 / [filename] = texto1.txt
File 0 / [stored_filename] = texto1.txt
File 0 / [size] = 3621
File 0 / [compressed_size] = 1293
File 0 / [mtime] = 1232091978
File 0 / [comment] =
File 0 / [folder] =
File 0 / [index] = 0
File 0 / [status] = ok
File 0 / [crc] = -1672123651


File 1 / [filename] = texto2.txt
File 1 / [stored_filename] = texto2.txt
File 1 / [size] = 2573
File 1 / [compressed_size] = 1071
File 1 / [mtime] = 1232091810
File 1 / [comment] =
File 1 / [folder] =
File 1 / [index] = 1
File 1 / [status] = ok
File 1 / [crc] = -1042150334


.............
.............
.............

La clase dispone de muchas opciones para trabajar con este tipo de ficheros. Para obtener una información más detallada puedes consultar el Manual Oficial. Por último indicar que si lo que deseamos es crear un fichero zip "al vuelo" y forzar a su descarga lo único que deberíamos hacer es añadir la cabecera correspondiente:

<?php
header("Content-type: application/octet-stream");
require_once('pclzip.lib.php');

$ListaArchivos = "texto1.txt,texto2.txt,texto3.txt,texto4.txt";

$archivo_zip = new PclZip('Nombre_Fichero.zip');
if ($archivo_zip->create($ListaArchivos) == 0) {
         die('Error : '.$archivo_zip->errorInfo(true));
}

header("Content-disposition: attachment; filename=Nombre_Fichero.zip");
?> 

Descargar ejemplo » »

PclZip 2.6 » »

Páginas: 1
comentarioscomentarios