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 :

Librairie ZIP : lecture élements d'un dossier


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Par défaut Librairie ZIP : lecture élements d'un dossier
    Bonjour,
    Je rencontre un soucis quant à la lecture de fichier zip.
    Mon problème est le suivant : Je voudrais afficher tous les fichiers d'un dossier contenu dans une archive.
    Quand j'utilise la boucle ci-dessous, mon problème est qu'il liste tous les fichiers et tous les dossiers de l'archive. Moi je voudrai afficher que les fichiers/noms des dossiers du dossier /TEST/ de l'archive par exemple.
    Avez vous une idée?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $zip = zip_open("archive.zip");
    if ($zip) {
    	while($zip_entry = zip_read($zip)) {		
    		if(substr(zip_entry_name($zip_entry),-1)=="/") {
    			echo "Dossier : ".zip_entry_name($zip_entry)."<br />";
    		}
    		else 
    			echo "Nom : " . zip_entry_name($zip_entry) . "<br>";
     
         }
    }
    Voila mon code actuel, mais il affiche tous les éléments de l'archive et non pas un dossier spécifique. Je n'ai pas trouvé comment se placer dans un dossier de l'archive.


    Merci d'avance,

    Nicolas

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    j'ai fais une petite lib pour ca : https://github.com/stealth35/Stdlib
    regarde la ZipArchiveIterator ça marche comme DirectoryIterator

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Par défaut
    Merci beaucoup, mais est ce qu'il serai possible d'avoir plus de détail?
    Comment j'installe la librairie? Et un exemple de l'utilisation? Le README est vide.


    Bonne journée et merci beaucoup pour ton aide.

    Nico

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    déjà faut être en PHP 5.3, apres c'est de l'installe standard
    (dossier library, le rajouter dans l'included path, puis faire un spl_autoload_register)

    pour l'utilisation c'est comme DirectoryIterator mais version wrapper zip donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    set_include_path('../Stdlib/library' . PATH_SEPARATOR . get_include_path());
    spl_autoload_register();
     
    $zip = new Stdlib\ZipArchiveIterator('test.zip#test/');
    foreach($zip as  $file)
    {
        var_dump($file->getFilename());
    }

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Par défaut
    D'accord, je vais essayer et je te tien au courant.

    Merci !

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Par défaut
    Je n'ai pas réussi, j'ai du mal faire quelque chose. Voici ce que j'ai fais. J'ai mis le code ci-dessous dans un fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // ./library étant le dossier contenant la librairie
    set_include_path(./library' . PATH_SEPARATOR . get_include_path());
    spl_autoload_register();
    $zip = new Stdlib\ZipArchiveIterator('test.zip#test/');
    foreach($zip as  $file)
    {
    	echo "lol";
        var_dump($file->getFilename());
    }
    et j'obtiens cette erreur :
    Fatal error: spl_autoload() [<a href='function.spl-autoload'>function.spl-autoload</a>]: Class Stdlib\ZipArchiveIterator could not be loaded in /Users/Nicoco/Sites/stage/test2.php on line 18
    La ligne 18 étant la ligne correspondant à la déclaration de la variable zip.

    Mais à ce que j'ai compris, cette librairie se charge de filtrées les entrées de l'archive?
    Parce que mon problème est que mon archive possède plus de 100 000 fichiers. Or avec zip_read() on ne peut qu'avoir 2^16 entrées maximum. Comment faire?

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

Discussions similaires

  1. Quelle est pour vous la meilleure librairie ZIP ?
    Par julien_chable dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 04/07/2008, 20h50
  2. Réponses: 6
    Dernier message: 21/10/2007, 01h19
  3. [Librairies] zip.lib.php Fatal error: Allowed memory size of 8388608 bytes exhausted
    Par manaboko dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 22/05/2006, 11h42
  4. Problème d'attribut de lecture seule sur des dossiers
    Par Redbull dans le forum Sécurité
    Réponses: 2
    Dernier message: 09/08/2005, 10h52
  5. [librairie zip] problème manipulation archive
    Par winnux dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 13/07/2005, 13h08

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