IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

ziper un dossier complet (fichiers inclus) avec ziplib


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    noobies
    Inscrit en
    Décembre 2014
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : noobies

    Informations forums :
    Inscription : Décembre 2014
    Messages : 103
    Points : 51
    Points
    51
    Par défaut 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 : 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

  2. #2
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    si jamais le problème existe encore, j'ai essayé ton dernier code :
    Code php : 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
    22
    23
    24
    <?php
     
    // exemple avec le répertoire courant
    $repertoire = getcwd();
    $repertoire = str_replace("\\", "/", $repertoire); // Utilisateurs de Windows, pensez à changer vos antislashes
     
    // 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");
    };
    et il fonctionne...

    on n'est pas dans le bon forum... : https://www.developpez.net/forums/f25/php/langage/
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

Discussions similaires

  1. [Batch] Liste des sous-dossiers avec leur nom et le nombre de fichier inclus
    Par sencha dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 05/02/2015, 10h27
  2. Réponses: 1
    Dernier message: 03/12/2009, 10h29
  3. Réponses: 3
    Dernier message: 28/03/2006, 10h52
  4. Réponses: 14
    Dernier message: 24/10/2005, 16h02
  5. Dossier ou Fichier avec ShellListView
    Par MoussDiouf dans le forum Langage
    Réponses: 6
    Dernier message: 14/06/2003, 12h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo