PHP Comprimere e decomprimere file ZIP
Link sponsorizzati
Una cosa che potrebbe tornare utile è quella di comprimere o decomprimere file zip attraverso uno script in PHP. PHP5 ci viene incontro fornendoci una classe molto semplice da usare, chiamata ZipArchive.
Questo snippet mostra come estrarre i file da un’archivio zip.
$zip = new ZipArchive();
$file = "archive.zip"; //file zip da estrarre
if($zip->open($file)===TRUE) {
$zip->extractTo("archivio_zip_estratto");
$zip->close();
echo "File estratto con successo!";
}else echo "Errore nell'apertura";
?>
Link sponsorizzati
Ora ci serve anche la possibilità di creare un’archivio tramite una pagina in php. La stessa classe ci da sempre una mano!
$zip = new ZipArchive();
$file= "test.zip";
if ($zip->open($file, ZIPARCHIVE::CREATE)===TRUE) {
$zip->addFromString("file.txt", "Questo è un esempio di un file di testo");
$zip->addFromString("file2.txt", "questo pure!");
$zip->addFile('ciao.txt', 'ciao.txt'); //inserisce il file ciao.txt dentro l'archivio e lo chiama ciao.txt (il secodo parametro indica il nome nell'archvio)
$zip->close();
}else echo "Errore nella creazione del'archivio";
?>
Qui la classe ZipArchive con tutti i metodi.
Navigando in rete ho anche trovato questa classe molto semplice da usare, qui un esempio del suo utilizzo.
Questo snippet comprime tutti i file contenuti nella directory nella quale lo script è lanciato!
require_once("zipfile.inc.php"); //richiamo il file php della classe, l'ho linkato sopra, potete scaricarla tranquillamente!
$zipfile = new zipfile();
foreach(glob("*") as $filename)
if(is_file($filename)) {
$filedata = implode("", file($filename));
$zipfile->add_file($filedata, $filename);
}
$f = fopen("archive.zip", "w");
fwrite($f, $zipfile->file());
fclose($f);
echo "Cartella archiviata in archive.zip";
?>
Link sponsorizzati


ciao e grazie per il tuo contributo questo articolo mi serviva proprio.
Ma lo provato non funziona, cioè o copiato il tuo codice lo messo in una pagina e non mi a creato nessun file zip.
Il tuo hosting supporta il php5?