Zip de dossier en php

Zip de dossier en php - PHP - Programmation

Marsh Posté le 21-07-2005 à 11:08:21    

Bonjour,
 
J'aimerai savoir déjà si c'est possible de mettre dans un zip un dossier entier et son contenu, si oui quelqu'un pourrait me dire comment svp?
 
Je sais faire avec un fichier classique mais là je ne trouve pas comment faire avec un dossier, sacahnt que je crée à chaque fois 3 dossiers dans lesquels je copie des images ou non et que je dois créeer un fichier zip regroupant ces 3 dossiers plus un fichier classique.
 
Merci d'avance,
 
Nkubi

Reply

Marsh Posté le 21-07-2005 à 11:08:21   

Reply

Marsh Posté le 21-07-2005 à 11:41:11    

un petit script que j'avais fait à l'époque (à adapter)
 
à utiliser avec pclzip.lib
 
fonction

Code :
  1. //-----------------------------------------------------------------------------  
  2. function zip($path)
  3. {
  4. if (!is_dir("photos/".$path) || !chdir("photos/".rawurldecode($path)))
  5.  {
  6.  echo "Erreur rép" ;
  7.  exit() ;
  8.  }
  9. $fichiers = array()  ;
  10. $rep = dir("." );
  11. $rep->rewind();
  12. $i=0 ;
  13. while($nomfic = $rep->read())
  14.  if ($nomfic != "." && $nomfic != ".." && !is_dir($nomfic) && $nomfic != "error_log" && $nomfic != $path.".zip" )
  15.   $fichiers[$i++] = $nomfic ;
  16. $fichier_zip = $path.".zip";
  17. if (file_exists($fichier_zip))
  18. unlink($fichier_zip) ;
  19. $zip= new PclZip($fichier_zip);
  20. $taille = sizeof($zip->listContent()) ;
  21. $zip->extractByIndex(0-$taille);
  22. $zip->add($fichiers,"","" );
  23. }
  24. //-----------------------------------------------------------------------------


 
zip.php

Code :
  1. <?php
  2. require("functions.php" ) ;
  3. $path = rawurldecode($_GET['f']) ;
  4. if (isset($_GET['f']) && is_dir("photos/".$path))
  5. {
  6. zip($path) ;
  7.  $file = $path .".zip" ;
  8. if(file_exists($file) && is_file($file))
  9.  {
  10.  header("Content-type: application/zip" );
  11.                 //header("Content-Type: application/octet-stream" );
  12.              header("Content-Length: " . filesize($file)) ;
  13.                header("Content-Disposition: filename=".urlencode($file));
  14.  //flush();
  15.  $speed = 1000 ;
  16.  $fd = fopen($file, "r" );
  17.     while(!feof($fd))
  18.   {
  19.   echo fread($fd, round($speed*1024));
  20.          flush();
  21.   sleep(1) ;
  22.      }
  23.                fclose ($fd);
  24.             unlink($file) ;
  25.  }
  26. else
  27.     echo "indisponible pour le moment chmod(0777)" ;
  28. }
  29. ?>


Message édité par jagstang le 21-07-2005 à 11:42:43
Reply

Marsh Posté le 21-07-2005 à 11:41:27    

tu zippes comment d'habitude? ("avec un fichier classique" )

Reply

Marsh Posté le 21-07-2005 à 12:24:11    

jagstang a écrit :


 
à utiliser avec pclzip.lib
 
fonction

Code :
  1. //-----------------------------------------------------------------------------  
  2. $zip= new PclZip($fichier_zip);
  3. $taille = sizeof($zip->listContent()) ;
  4. $zip->extractByIndex(0-$taille);
  5. $zip->add($fichiers,"","" );




 
Oui je venais de récupérer pclzip.lib, le problème c'est que depuis tout à l'heure je ne fais que d'avoir une archive qui est vide d'une taille de 0 ko.  
J'ai essayé en reprenant ta façon de faire juste là j'ai aussi essayé ça au départ :

Code :
  1. $fichier_zip="zip/".$info4['groupe'].".zip";
  2. $archive = new PclZip($fichier_zip);
  3. $v_list = $archive->create('./zip/Tel/ ./zip/Mess/ ./zip/Mag/');


 
Je comprend pas...
 
Nkubi

Reply

Marsh Posté le 21-07-2005 à 13:22:01    

Bon j'ai réussi à créer mon fichier zip et à mettre quelque chose dedans le problème c'est que ça me copie tout le contenu du dossier dans la racine du zip alors que moi c le dossier que j'aimerai avoir à la racine....
 
Aidez-moi svp
 
Nkubi

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed