compression zip récursive en PHP

Mercredi, janvier 6, 2010 18:18

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:

  1. if(substr(phpversion(), 0, 1) < 5)
  2.  exit("Vous devez utiliser <strong>PHP5 ou supérieur</strong>.<br />Vous utilisez <strong>".phpversion()."</strong>");
  3.  
  4. if(false === extension_loaded('zip'))
  5.  exit("Le module PHP5 <strong>Zip</strong> n'est pas chargé");
  6.  
  7. $repertoire_a_compresser = dirname(__FILE__);
  8.  
  9.  
  10. $iter = new RecursiveIteratorIterator(
  11.      new RecursiveDirectoryIterator($repertoire_a_compresser,RecursiveDirectoryIterator::KEY_AS_FILENAME)
  12.      ,RecursiveIteratorIterator::SELF_FIRST);
  13.  
  14.      
  15. $zip = new ZipArchive();
  16. $fichier= '/tmp/'.uniqid().'.zip';
  17. $res = $zip->open($fichier, ZipArchive::CREATE);
  18.  
  19.      
  20. foreach ($iter as $entry):
  21.  $filename = str_replace($repertoire_a_compresser, '', $entry);
  22.  
  23.  if('/' === $filename{0})
  24.   $filename = substr($filename, 1);
  25.  
  26.  $zip->addFile($entry, $filename);
  27.  
  28. endforeach;
  29.  
  30. $zip->close();
  31.  
  32.  
  33.          
  34. header('Content-Type: application/octet-stream');
  35. header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'."\n");
  36. header('Content-Disposition: attachment; filename="compression-zip-php.zip"'."\n");
  37. header('Pragma: no-cache');
  38.    
  39. readfile("$fichier");
  40. unlink($fichier);
  41. ?>

Télécharger le script PHP Compression zip

You can leave a response, or trackback from your own site.
Tags: , ,

Leave a Reply