Ingeny, le blog !

Véritable fenêtre sur notre univers, vous trouverez dans ce blog des ressources technologiques, des conseils, des témoignages et bien d'autres choses encore...

PHP - Écrit par Dupond Jean-Francois PDFImprimerEnvoyer 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

Voici le code source:

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);
?>
 

Télécharger le script PHP Compression zip