Zippare file sul server con php

3 ottobre 2009 di admin

In questo articolo presentiamo un’ottima libreria scritta in php per zippare file sul server.

La libreria in questione è pclzip.lib.php ed è scaricabile qui.

Vediamo un esmpio di utilizzo di questa libreria:

// Includo la libreria
include("pclzip.lib.php");
// Nome del file da zippare
$nome_file = "video.flv";
// Istanzio la classe
$archivio = new PclZip(substr($nome_file,0,strrpos($nome_file,".")) . ".zip");
//Qui vanno aggiunti i files da comprimere
$listOfFilesToCompress=$nome_file;
//Ora li aggiungo all'archivio
$v_list = $archivio->add($listOfFilesToCompress);
// Se qualcosa va storto visualizzo il messaggio di errore
if ($v_list == 0) {
die("Error : ".$archivio->errorInfo(true));
}

Il costruttore della classe PclZip prende in input il nome del file zip da creare; nel nostro esempio utilizziamo lo stesso nome del file sostituendo l’estensione.

La variabile $listOfFilesToCompress contiene l’elenco dei nomi dei file da zippare separati da virgola.

Vediamo adesso un esempio in per comprimere tutte le immagini .jpg presenti in una specificata cartella deniminata media. Nel nostro esempio faremo uso della funzione ElencaFiles() presentata nell’articolo precedente:

// Funzione ElencaFiles() per elencare i file presenti in una cartella
function ElencaFiles($dirname){
// Dichiaro l'array
$arrayfiles=Array();
// Verifico se esiste la directory data in input
if(file_exists($dirname)){
$handle = opendir($dirname);
// Leggo il contenuto della directory
while (false !== ($file = readdir($handle))) {
// Se il valore letto è un file, inserico il nome del file nell'array
if(is_file($dirname.$file)){
array_push($arrayfiles,$file);
}
}
$handle = closedir($handle);
}
// Ordino l'array e lo restituisco
sort($arrayfiles);
return $arrayfiles;
}

// Configurazione
$cartella = "media";
$nome_zip = "immagini_jpg.zip";
//Qui metteremo i nomi dei file da comprimere separati da virgola
$listOfFilesToCompress="";
// Includo la libreria
include("pclzip.lib.php");
// Recupero i file nella cartella 'media'
$elenco_file = array();
$elenco_file = ElencaFiles($cartella);
// Controllo l'estensione e compongo l'array contenente i titoli delle jpg
for($i=0;$i<count($elenco_file);$i++)
{
$ext = strtolower(substr($elenco_file[$i],strrpos($elenco_file[$i],".")+1));
if($ext == "jpg")
{
if($listOfFileToCompress != "")
$listOfFileToCompress .= ",";
$listOfFileToCompress .= $elenco_file[$i];
}
}
// Istanzio la classe
$archivio = new PclZip($nome_zip);
//Ora aggiungo i file all'archivio
$v_list = $archivio->add($listOfFilesToCompress);
// Se qualcosa va storto visualizzo il messaggio di errore
if ($v_list == 0) {
die("Error : ".$archivio->errorInfo(true));
}

Lascia un commento