PHP -
Écrit par Dupond Jean-Francois


Publié le 06.01.10
Ce script permet la compression Zip en PHP et ce récursivement !
que veux dire récursivement?
dans notre cas, ça vous permet de compresser un répertoire et tous ses sous-répertoires et fichiers sur plusieurs niveaux, le tout dans un zip :)
qu'est ce qu'un fichier Zip ?
C'est un format de fichier qui permet de mettre tous les fichiers dans 1 seul et unique fichier compressé.
ça facilite l'échange de fichier et permet un gain de taille du à la compression.
Qu'est ce que SPL ?
Standard PHP Library est une collection d'interfaces et de classe intégrées au PHP qui permettent la résolution de problème connu. tel que parcourir un répertoire ;) Documentation SPL
if(substr(phpversion(), 0, 1) < 5) exit("Vous devez utiliser <strong>PHP5 ou supérieur</strong>. Vous utilisez <strong>".phpversion()."</strong>"); if(false === extension_loaded('zip')) exit("Le module PHP5 <strong>Zip</strong> n'est pas chargé"); $repertoire_a_compresser = dirname(__FILE__); $iter = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($repertoire_a_compresser ,RecursiveDirectoryIterator::KEY_AS_FILENAME) ,RecursiveIteratorIterator::SELF_FIRST); $zip = new ZipArchive(); $fichier= '/tmp/'.uniqid().'.zip'; $res = $zip->open($fichier, ZipArchive::CREATE); foreach ($iter as $entry): $filename = str_replace($repertoire_a_compresser, '', $entry); if('/' === $filename{0}) $filename = substr($filename, 1); $zip->addFile($entry, $filename); endforeach; $zip->close(); header('Content-Type: application/octet-stream'); header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'."\n"); header('Content-Disposition: attachment; filename="compression-zip-php.zip"'."\n"); header('Pragma: no-cache'); readfile("$fichier"); unlink($fichier); ?>