Dezipper une archive en conservant l'arborescence
Posté : 28 mai 2012, 18:55
Bonjour, voila je suis confronté à un problème (encore me direz vous...
) avec la fonction unzip.
J'ai récuperé un script qui fonctionne parfaitement quand l'archive contient un seul fichier mais pas quand celle-ci à 385 fichiers et sous dossiers.
Je cherche à modifier ce bout de code pour qu'il dezippe mon archive et surtout qu'il conserve l'arborescence.
le code :
merci
J'ai récuperé un script qui fonctionne parfaitement quand l'archive contient un seul fichier mais pas quand celle-ci à 385 fichiers et sous dossiers.
Je cherche à modifier ce bout de code pour qu'il dezippe mon archive et surtout qu'il conserve l'arborescence.
le code :
function unzip($file, $path='', $effacer_zip=false)
{
$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 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);
}
return $tab_liste_fichiers;
}
/**********************************************************/
$liste = array();
$liste = unzip('../archive/latest.zip','../../comptes/'.valideChaine($_POST['societe']).'/');
echo 'Le fichier zip contenait '.count($liste).' fichier(s) :<br />';
foreach ($liste as $nom_fichier)
{
echo $nom_fichier.'<br />';
}
Qu'elle partie dois je modifier pour extraire tout mes fichier avec leurs l'arborescence?merci