[PHP] fichier ZIP recuperer et decompresser

bedomon Messages postés 8 Statut Membre -  
canfly Messages postés 14 Statut Membre -
J'ai un code en php pour decompresser un fichier zip il arrive a me le dezzipper malgré des erreurs dans le code et je voudrais l'ameliorer pour definir le repertoire de destination mais ca ne fonctionne pas. Si quelqu'un pouvait m'aider ou possede un script qui marche ?.????

Merci
Configuration: easyphp 1.8

2 réponses

  1. summd5
     
    voici un code source pour decompresser un fichier zip
    <?php

    function unzip($file, $path='', $effacer_zip=false)
    {/*Méthode qui permet de décompresser un fichier zip $file dans un répertoire de destination $path
    et qui retourne un tableau contenant la liste des fichiers extraits
    Si $effacer_zip est égal à true, on efface le fichier zip d'origine $file*/

    $tab_liste_fichiers = array(); //Initialisation

    $zip = zip_open($file);

    if ($zip)
    {
    while ($zip_entry = zip_read($zip)) //Pour chaque fichier contenu dans le fichier zip
    {
    if (zip_entry_filesize($zip_entry) > 0)
    {
    $complete_path = $path.dirname(zip_entry_name($zip_entry));

    /*On supprime les éventuels caractères spéciaux et majuscules*/
    $nom_fichier = zip_entry_name($zip_entry);
    $nom_fichier = strtr($nom_fichier,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn");
    $nom_fichier = strtolower($nom_fichier);
    $nom_fichier = ereg_replace('[^a-zA-Z0-9.]','-',$nom_fichier);

    /*On ajoute le nom du fichier dans le tableau*/
    array_push($tab_liste_fichiers,$nom_fichier);

    $complete_name = $path.$nom_fichier; //Nom et chemin de destination

    if(!file_exists($complete_path))
    {
    $tmp = '';
    foreach(explode('/',$complete_path) AS $k)
    {
    $tmp .= $k.'/';

    if(!file_exists($tmp))
    { mkdir($tmp, 0755); }
    }
    }

    /*On extrait le fichier*/
    if (zip_entry_open($zip, $zip_entry, "r"))
    {
    $fd = fopen($complete_name, 'w');

    fwrite($fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)));

    fclose($fd);
    zip_entry_close($zip_entry);
    }
    }
    }

    zip_close($zip);

    /*On efface éventuellement le fichier zip d'origine*/
    if ($effacer_zip === true)
    unlink($file);
    }

    return $tab_liste_fichiers;
    }

    /**********************************************************/

    $liste = array();

    $liste = unzip('util.zip','util/');

    echo 'Le fichier zip contenait '.count($liste).' fichier(s) :<br />';

    foreach ($liste as $nom_fichier)
    {
    echo $nom_fichier.'<br />';
    }

    ?>
    7
    1. HADJADJ
       
      Je vous remercie bcp bcp pour cet haut épris ..
      0
    2. virmak
       
      Merci Bcpp
      0
    3. benenutz
       
      Merci beaucoup pour ce script ^
      0