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