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 :

Extraire seulement les fichiers avec extractTo et seulement les fichiers images [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 95
    Points : 81
    Points
    81
    Par défaut Extraire seulement les fichiers avec extractTo et seulement les fichiers images
    Bonjour,

    Je souhaiterais savoir si quelqu'un peut m'aider pour extraire juste les fichiers d'un ZIP à l'aide de extractTo.

    Exemple de composition de mon archive :

    --- fichier 1
    --- fichier 2
    --- fichier 3
    --- dossier 1
    ------ fichier 4
    ------ fichier 5

    Je voudrais extraire les fichiers 1,2,3,4 et 5 vers un dossier destination sans voir apparaitre le Dossier 1.

    Il faudrait également que je puisse extraire seulement les fichiers de type jpeg, jpg, png.

    Merci d'avance pour vos réponses.

    PS: Ci-dessous mon code (avec les dossiers qui sont visibles).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $zip = new ZipArchive;
    if ($zip->open($_FILES['zip']['tmp_name']) === TRUE)
    {
      $zip->extractTo($dest_dossier);
      $zip->close();
      echo 'ok';
    }
    else {
      echo 'échec';

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je t'offre un peu de lecture :
    http://julp.developpez.com/php/zip/

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 95
    Points : 81
    Points
    81
    Par défaut
    Oups, j'étais passer à coté de cette page.
    Merci et excusez moi pour ma mauvaise recherche.....

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 95
    Points : 81
    Points
    81
    Par défaut
    re bonjour,
    grâce à Sabotage, je suis parvenu à extraire simplement mes fichiers images avec 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
    22
    23
    24
    25
    26
     
    $photos = array();
    $extensionsImages = array ('jpg','jpeg','JPEG','JPG','PNG','png');
    $zip = new ZipArchive; 
    if ($zip->open($_FILES['zip']['tmp_name']) === TRUE)
    {
      $nbEntrees = $zip->numFiles;
      if ($nbEntrees > 0)
      {
        for ($i = 0; $i < $nbEntrees; $i++)
        {
          $entree = $zip->statIndex($i);
          //recherche extension
         $extension=strrchr($entree['name'],'.');
         $extension=substr($extension,1) ;
     
         // si l'extension est bien celle d'une image on l'ajoutes au tableau des fichiers à extraire.
         if(in_array($extension, $extensionsImages))      
           $photos[] = $entree['name'];
        }
      }
      $zip->extractTo($dest_dossier, $photos);
      $zip->close();
    }
    else
      $erreur = 'échec';
    Par contre je ne vois pas comment faire pour ne pas tenir compte des sous dossiers dans l'archive.
    Par la même occasion pourriez vous me dire si mon code ci dessus est correct SVP.

    Merci d'avance.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est grâce au tuto de Julp plutôt

    D'ailleurs pour voir si un fichier doit s'extraire dans un sous dossier ou non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strpos($fichier, '/') !== FALSE

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 95
    Points : 81
    Points
    81
    Par défaut
    Oui tout à fait pour le tuto mais je te remercie quand même pour ta réponse.

    Par contre en utilisant "strpos" je vais détecter qu'il y a un sous dossier mais suis-je obligé de passer par un dossier d'extraction intermédiaire pour extraire mes fichiers directement dans le dossier de mon choix ?

    J'ai réussi à bloquer l'extraction des sous dossiers en utilisant un basename en faisant comme ceci :
    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
    22
    23
    24
    25
    $photos = array();
    	$extensionsImages = array ('jpg','jpeg','JPEG','JPG','PNG','png');
    	$zip = new ZipArchive; 
        if ($zip->open($_FILES['zip']['tmp_name']) === TRUE)
    	{
    	  $nbEntrees = $zip->numFiles;
    	  if ($nbEntrees > 0)
    	  {
    	    for ($i = 0; $i < $nbEntrees; $i++)
    		{
    		  $entree = $zip->statIndex($i);
    		  //recherche extension
    		  $extension=strrchr($entree['name'],'.');
    		  $extension=substr($extension,1) ;
     
    		  // si l'extension est bien celle d'une image on l'ajoutes au tableau des fichiers à extraire.
    		  if(in_array($extension, $extensionsImages))      
    		    $photos[] = (basename)$entree['name'];
    		}
          }
    	  $zip->extractTo($dest_dossier, $photos);
    	  $zip->close();
        }
    	else
          $erreur = 'échec';

    Par contre ça ne fonctionne pas car les fichiers qui sont dans un sous dossier de l'archive ne sont pas extraient.
    Ce que je voudrais obtenir c'est l'extraction de tous les fichiers image dans le dossier de mon choix sans sous dossiers.

    Excusez mon ignorance.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/11/2011, 07h06
  2. comment trouver des fichiers avec leur extension seulement?
    Par casual92 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/07/2010, 14h43
  3. probleme avec l'envoi d'un fichier avec les socket
    Par yous18 dans le forum Réseau
    Réponses: 8
    Dernier message: 05/02/2009, 11h07
  4. Ouvrier un fichier avec macro depuis un autre fichier avec macro
    Par Jeanvaljean44 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/11/2008, 12h23
  5. rediriger les résultats d'un programme dans un fichier avec format spécifié
    Par condor_01 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 27/11/2007, 21h55

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