Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment décompressé un fichier ZIP sur le serveur via PHP ?

Sujet résolu
    24 novembre 2007 à 7:25:56

    Bonjour à tous :D

    Sur mon serveur, j'ai un fichier ZIP (ou .rar peu importe), et j'aimerai décompresser l'ensemble des fichiers qu'il contient dans un répertoire. Pour corsé le truc le fichier ZIP est protégé par un mot de passe.

    J'ai cherché un peu partout sur Internet et apparement c'est un véritable problème pour beaucoup de monde, j'ai essayé de lire la doc sur http://fr.php.net/zip mais c'est un langage que je ne comprend malheureusement pas :D

    Si quelqu'un pouvais m'aider, je lui serait éternellement reconnaissant !
    • Partager sur Facebook
    • Partager sur Twitter
      25 novembre 2007 à 16:19:57

      Suite à mes recherches, j'ai trouvé deux script intéressant:

      1. <?php
      2. function unzip($file, $path='', $effacer_zip=false)
      3. {/*Méthode qui permet de décompresser un fichier zip $file dans un répertoire de destination $path
      4.   et qui retourne un tableau contenant la liste des fichiers extraits
      5.   Si $effacer_zip est égal à true, on efface le fichier zip d'origine $file*/ 
      6.         $tab_liste_fichiers = array(); //Initialisation
      7.         $zip = zip_open($file);
      8.         if ($zip)
      9.         {
      10.                 while ($zip_entry = zip_read($zip)) //Pour chaque fichier contenu dans le fichier zip
      11.                 {
      12.                         if (zip_entry_filesize($zip_entry) > 0)
      13.                         {
      14.                                 $complete_path = $path.dirname(zip_entry_name($zip_entry));
      15.                                 /*On supprime les éventuels caractères spéciaux et majuscules*/
      16.                                 $nom_fichier = zip_entry_name($zip_entry);
      17.                                 $nom_fichier = strtr($nom_fichier,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn");
      18.                                 $nom_fichier = strtolower($nom_fichier);
      19.                                 $nom_fichier = ereg_replace('[^a-zA-Z0-9.]','-',$nom_fichier);
      20.                                 /*On ajoute le nom du fichier dans le tableau*/
      21.                                 array_push($tab_liste_fichiers,$nom_fichier);
      22.                                 $complete_name = $path.$nom_fichier; //Nom et chemin de destination
      23.                                 if(!file_exists($complete_path))
      24.                                 {
      25.                                         $tmp = '';
      26.                                         foreach(explode('/',$complete_path) AS $k)
      27.                                         {
      28.                                                 $tmp .= $k.'/';
      29.                                                 if(!file_exists($tmp))
      30.                                                 { mkdir($tmp, 0755); }
      31.                                         }
      32.                                 }
      33.                                 /*On extrait le fichier*/
      34.                                 if (zip_entry_open($zip, $zip_entry, "r"))
      35.                                 {
      36.                                         $fd = fopen($complete_name, 'w');
      37.                                         fwrite($fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)));
      38.                                         fclose($fd);
      39.                                         zip_entry_close($zip_entry);
      40.                                 }
      41.                         }
      42.                 }
      43.                 zip_close($zip);
      44.                 /*On efface éventuellement le fichier zip d'origine*/
      45.                 if ($effacer_zip === true)
      46.                 unlink($file);
      47.         }
      48.         return $tab_liste_fichiers;
      49. }
      50. /**********************************************************/
      51. $liste = array();
      52. $liste = unzip('mon_fichier.zip','repertoire_destination/');
      53. echo 'Le fichier zip contenait '.count($liste).' fichier(s) :<br />';
      54. foreach ($liste as $nom_fichier)
      55. {
      56.         echo $nom_fichier.'<br />';
      57. }
      58. ?>



      et un code beaucoup moins long qui permet de compresser des fichiers via PHP et de les décompresser:

      1. <?php
      2. function compress( $srcFileName, $dstFileName )
      3. {
      4.     // getting file content
      5.     $fp = fopen( $srcFileName, "r" );
      6.     $data = fread ( $fp, filesize( $srcFileName ) );
      7.     fclose( $fp );
      8.     // writing compressed file
      9.     $zp = gzopen( $dstFileName, "w9" );
      10.     gzwrite( $zp, $data );
      11.     gzclose( $zp );
      12. }
      13. function uncompress( $srcFileName, $dstFileName, $fileSize )
      14. {
      15.     // getting content of the compressed file
      16.     $zp = gzopen( $srcFileName, "r" );
      17.     $data = fread ( $zp, $fileSize );
      18.     gzclose( $zp );
      19.     // writing uncompressed file
      20.     $fp = fopen( $dstFileName, "w" );
      21.     fwrite( $fp, $data );
      22.     fclose( $fp );
      23. }
      24. compress( "tmp/supportkonzept.rtf", "tmp/_supportkonzept.rtf.gz" );
      25. uncompress( "tmp/_supportkonzept.rtf.gz", "tmp/_supportkonzept.rtf", filesize( "tmp/supportkonzept.rtf" ) );
      26. ?>
      • Partager sur Facebook
      • Partager sur Twitter
        4 décembre 2007 à 7:39:35

        si ton probléme est résolu indique
        • Partager sur Facebook
        • Partager sur Twitter
          4 décembre 2007 à 15:48:40

          Avec mes plus plates excuses :)
          • Partager sur Facebook
          • Partager sur Twitter
            28 mars 2017 à 12:57:23

            Bonjour, j'ai un problème assez similaire et je ne comprend pas comment Nouveauzero a résolu le sien, le lien donné par Dexinou ne fonctionnant plus...
            De plus le site me conseil de créer un nouveau sujet car celui est "très ancien".
            C'est donc ce que j'ai fait : sujet

            Décompresser dans le répertoire du serveur web

            " mais voilà je n'ai pas eu de réponse et ce nouveau sujet semble avoir disparu :/
            Merci de me dire quoi faire ? Est-ce que je dois reposter ma question ???

            -
            Edité par EricVario 28 mars 2017 à 14:04:15

            • Partager sur Facebook
            • Partager sur Twitter
              29 mars 2017 à 10:58:19

              Bonjour,
              J'ai retrouvé mon message! Lien pour ceux que ça intéresse :
              https://openclassrooms.com/forum/sujet/decompresser-dans-le-repertoire-du-serveur-web
              Merci pour l'aide...
              • Partager sur Facebook
              • Partager sur Twitter

              Comment décompressé un fichier ZIP sur le serveur via PHP ?

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown