Bonjour,

j'utilise la librairie ziplib pour ziper des fichiers, dans chaque dossier j'ai 3 fichiers PDF j'arrive a ziper un par un mais ce n'est pas le but,

j'aimerais ziper une archive avec tout les fichiers contenus dans le dossier.

a l'unité j'utilise ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
require( "lib/zip.lib.php" ) ; //indiquez le chemin d'accès à la lib
 $zip = new zipfile( ) ; //on crée une nouvelle instance zip
 
 $nom_fichier = 'pdf/'.$date.'/'.$vin.'/clim.pdf'; //nom du fichier à compresser
 $fo = fopen($nom_fichier,'r') ; //on ouvre le fichier
 $contenu = fread($fo, filesize($nom_fichier)) ; //on enregistre le contenu
 fclose($fo) ; //on ferme le fichier
 
 $zip->addfile($contenu, $nom_fichier) ; //on ajoute le fichier
 $archive_zip = $zip->file() ; //on associe l'archive
 $open = fopen( 'pdf/'.$vin.'.zip' , "wb"); //crée le fichier zip
 fwrite($open, $archive_zip); //enregistre le contenu de l'archive
 fclose($open); //ferme l'archive
pour le faire avec trois fichier j'ai bien ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 require( "lib/zip.lib.php" ) ; // librairie ZIP
 $zip = new zipfile () ; //on crée une instance zip
 
 // liste des fichiers à compresser
 $files = array ( 'monrep/doc1.doc' , 'monrep/doc2.doc' , 'monrep/doc3.doc' ) ;
 
 $i = 0 ;
 while ( count( $files ) > $i )   {
   $fo = fopen($files[$i],'r') ; //on ouvre le fichier
   $contenu = fread($fo, filesize($files[$i])) ; //on enregistre le contenu
   fclose($fo) ; //on ferme fichier
   $zip->addfile($contenu, $files[$i]) ; //on ajoute le fichier
   $i++; //on incrémente i
 
 }
 
 $archive = $zip->file() ; // on associe l'archive
 // on enregistre l'archive dans un fichier
 $open = fopen( 'monrepertoire/monfichier.zip' , "wb");
 fwrite($open, $archive);
 fclose($open);
j'ai essayé d'y placer mes trois fichiers en faisant un scandir avant mais ca ne me les prend pas.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// exemple avec le répertoire courant
$repertoire = 'pdf/'.$date.'/'.$vin.'/';
 
// la valeur de retour de scandir est un tableau
$tabFichiers = scandir($repertoire);
 
// si le répertoire est valide
  if ($tabFichiers !== false) {
 
    // on parcourt le tableau
    for ($i = 0; $i < sizeof($tabFichiers); $i++) {
      $nomFichier = $tabFichiers[$i];
 
      // on évite l'affichage des fichiers cachés en testant le premier caractère du nom
      if ($nomFichier[0] != ".") {
        echo ''.$nomFichier.',';
      }
    }
  } else {
    die("Erreur: repertoire invalide");
  };
merci