ziper un dossier complet (fichiers inclus) avec ziplib
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:
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:
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:
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