[PHP] How to create a ZIP file and download

Salve a tutti,

recentemente mi è tornato utile creare un archivio zip di determinati file, per poi poterlo scaricare dal web al volo.
Per fare ciò mi sono servito della fantastica libreria PclZip con la quale effettuare questa operazione.
bene ora vediamo il codice rigorosamente commentato

<?php
 
//CONFIG: Definisco uan variabile costante per dichiarare
// la cartella dove è contenuta la libreria PclZip
define('__PATH_ZIP_LIB__', './pclzip-2-6/');//Change this
 
//Nome dell'archivio 
$nome_archivio_zip = "Archivio_".date("dmY")."_".time().".zip"; 
 
//CONTROL: se esiste già, cerco di cancellarlo
if (file_exists($nome_archivio_zip)) 
	@unlink($nome_archivio_zip); 
 
 
//Includo la libreria e genero l'oggetto zip 
require_once(__PATH_ZIP_LIB__.'pclzip.lib.php'); 
 
$pclzip_obj = new PclZip($nome_archivio_zip); 
 
//Una lista di nomi di files da comprimere 
$lista_file_da_zippare = "profile.php,users.php,mysql.class.php"; //potete scrivere anche il nome di un singolo file eliminando la virgola finale
 
//Aggiungo i files all'archivio 
$response_pclzip = $pclzip_obj->add($lista_file_da_zippare); 
 
//Controllo eventuali errori che possibilmente 
//ha scaturito la compressione
if ($response_pclzip == 0)
    die("[ERROR] PclZip : ".$pclzip_obj->errorInfo(true)); 
 
//Opzionale: scarico l'archivio ZIP
if(!empty($_REQUEST['download'])) {	
 
	header("Content-type: application/zip"); 
	header("Content-Disposition: attachment; filename=$nome_archivio_zip"); 
	header("Content-Description: Backup"); 
	header("Content-Length: ".filesize($nome_archivio_zip)); 
	readfile($nome_archivio_zip);
}
?>

Ecco il sorgente già funzionante, potete modificarlo a vostro piacimento per le vostre esigenze.
Se volete far scaricare direttamente il file bastera richiamare il file php con il seguente URL:

nome_file.php?download=1

Fine, spero servirà a qualcuno :D

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>