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

Langage PHP Discussion :

création d'un fichier zip


Sujet :

Langage PHP

  1. #1
    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 création d'un fichier zip
    Bonjour,

    je souhaite zipper un dossier.

    J'y parviens avec ce code :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $zip = new ZipArchive();
    $filename = "test.zip";
     
    if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
        exit("Impossible d'ouvrir le fichier <$filename>\n");
    }
     
    $file1=scandir(__DIR__.'\\'.$url);
    foreach($file1 as $file2) {
        if (($file2!='.')&&($file2!='..')) 
        $zip->addFile(__DIR__."\\".$url."\\".$file2);}}
    $zip->close();
    Le hic étant qu'au lieu de ne contenir que les fichiers contenus par ce dossier, le fichier zip généré contient tous les dossiers et sous-dossiers qui contiennent les fichiers.
    Voici ce que contient le fichier zip :
    C:
    wamp64
    www
    heb-photos
    testb
    fichier1
    fichier2
    etc

    Comment éviter d'avoir tout ce détail ?

    Ce que je souhaite obtenir, c'est un ficher zip qui contiendrait uniquement :

    fichier1
    fichier2
    etc
    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

  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,

    pour essayer de corriger ce problème, j'ai essayé ce 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
    $zip = new ZipArchive();
    $filename = "test.zip";
     
    if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
        exit("Impossible d'ouvrir le fichier <$filename>\n");
    }
     
    $file1=scandir($url);
    foreach($file1 as $file2) {
        if (($file2!='.')&&($file2!='..'))  {
            $zip->addFile($file2);
        }
    }
    $zip->close();
    Pas de message d'erreur mais pas de fichier zip créé non plus. Donc solution pas trouvée.
    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

  3. #3
    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
    Bonsoir,

    j'ai résolu mon souci : je me déplace à l'intérieur du répertoire à zipper ; je crée le fichier zip avec tout le contenu du répertoire ; je déplace le fichier zip dans le répertoire parent :

    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
    25
    26
    27
    <?php
    $url=$_POST['url'];
     
    chdir($url);
     
    $zip = new ZipArchive();
    $filename = $url.".zip";
     
    if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
        exit("Impossible d'ouvrir le fichier <$filename>\n");
    }
     
        if ($dh = opendir(__DIR__."\\".$url)) {
     
            // boucler tant que quelque chose est trouve
            while (($file = readdir($dh)) !== false) {
                if (($file!='.')&&($file!='..'))
                    $zip->addFile($file);
            }
            // on ferme la connexion
            closedir($dh);
        }
     
    $zip->close();
     
    rename($filename,"../".$filename) ; 
    ?>
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/01/2015, 11h28
  2. Création d'un fichier ZIP
    Par dedepsg dans le forum Langage
    Réponses: 8
    Dernier message: 30/04/2009, 14h03
  3. Réponses: 11
    Dernier message: 15/12/2008, 14h47
  4. [Zip] Création d'un fichier zip avec zip.lib.php corrompue
    Par fdthierry dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 02/06/2008, 14h01
  5. Réponses: 1
    Dernier message: 18/02/2008, 07h53

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