[PHP] fichier ZIP recuperer et decompresser

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. 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 />';
    }

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