Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

Gestire file Zip PHP

Articolo scritto da Claudio Garau

Finalmente, grazie alla recente versione 5.2.2, anche PHP ha un supporto nativo per la gestione degli archivi compressi in formato Zip.

Se utilizzate Windows recatevi nella sotto-cartella "ext" o "extensions" di PHP e controllare che sia presente la libreria "php_zip.dll"; se abbiamo scaricato l'ultima versione di PHP questa sarà sicuramente inserita tra le altre, quindi non ci rimarrà altro da fare che aprire il file di configurazione php.ini e decommentare la riga seguente eliminando il punto e virgola che la precede:

extension=php_zip.dll
Salviamo il file di configurazione e riavviamo il Web server Apache, ora siamo pronti per gestire gli archivi con PHP sfruttando l'algoritmo di compressione più diffuso al mondo.

Innanzitutto vedremo come creare un file Zip contenente più documenti utilizzando la nostra nuova libreria:

<?php
$archivia = new ZipArchive();
$nome_file = "archivio.zip";

if ($archivia->open($nome_file, ZIPARCHIVE::CREATE)!==TRUE) 
{
  @exit("Impossibile aprire <$nome_file>\n");
}

$archivia->addFromString("file1.txt", 
"Testo del primo file zippato\n");

$archivia->addFromString("file2.txt", 
"Testo del secondo file zippato\n");

echo "Sono stati zippati: " . $archivia->numFiles . " file.\n";

$archivia->close();
?>
Come è facile notare dall'esempio proposto, lo scopo dello script è quello di creare un file ".zip" contenente due file di testo. Ma non ci siamo limitati ad archiviare i due file, infatti prima di far questo abbiamo inserito (scritto) del contenuto all'interno dei ".txt" che potrà essere letto una volta aperto l'archivio.

Nell'applicazione sono stati richiamati 4 metodi dell'oggetto ZipArchive():

  1. open(): apre l'archivio;
  2. addFromString(): scrive sul file da archiviare;
  3. numFiles(): conta i file archiviati;
  4. close(): chiude l'esecuzione.
Vediamo ora come aggiungere file ad un archivio pre-esistente:
<?php
$archivia = new ZipArchive();
$nome_file = "archivio2.zip";

if ($archivia->open($nome_file, ZIPARCHIVE::CREATE)!==TRUE) 
{
  @exit("Impossibile aprire <$nome_file>\n");
}

$archivia->addFromString("file1.txt", 
"Testo del primo file zippato\n");

$archivia->addFromString("file2.txt", 
"Testo del secondo file zippato\n");

$archivia->addFile("file3.txt");

echo "Sono stati zippati: " . $archivia->numFiles . " file.\n";
$archivia->close();

?>
La novità in questo caso è il metodo addFile() dell'oggetto ZipArchive() che si occupa appunto di incrementare il numero di documenti presenti nel file zip aggiungendone di nuovi.

Vediamo infine come leggere ed estrarre il contenuto di un file zippato:

<?php
$archivia = new ZipArchive();
$nome_file = 'archivio2.zip';

if ($archivia->open($nome_file)!==TRUE) 
{
  @exit("Impossibile aprire <$nome_file>\n");
}
echo "<pre>";
print_r($archivia);
var_dump($archivia);
echo "</pre>";
echo "L'archivio " .$nome_file. " contiene i seguenti file:\n <br>";
echo "<pre>";

for ($j=0; $j<$archivia->numFiles;$j++)
{
  print_r($archivia->statIndex($j));
}
echo "</pre>";

$archivia->extractTo('./cartella/');
$archivia->close();
?>
Anche in quest'ultimo esempio troviamo due nuovi metodi: statIndex() per la lettura del contenuto dell'archivio e extractTo() che ci permette di estrarre i file nel percorso indicato come parametro al metodo.

Corsi
Corso LinuxCorso Linux
Guida completa al sistema open-source. A partire da 39 €.
Corso MySQLCorso MySQL
Gestione del database open-source. A partire da 49 €.
Corso PHPCorso PHP
Corso completo per la creazione di siti Web dinamici. A partire da 49 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122