Bonjour,
Je suis amené a créer une archive ZIP d'un repertoire (non vide, avec sous repertoires), puis de la decompresser.
Je n'ai pas eu trop de soucis, le code suivant fonctionne bien :
Code :
- <?php
- function addFolderToZip($dir, $zipArchive){
- if (is_dir($dir)) {
- if ($dh = opendir($dir)) {
- //Add the directory
- $zipArchive->addEmptyDir($dir);
-
- // Loop through all the files
- while (($file = readdir($dh)) !== false) {
-
- //If it's a folder, run the function again!
- if(!is_file($dir . $file)){
- // Skip parent and root directories
- if( ($file !== "." ) && ($file !== ".." )){
- addFolderToZip($dir . $file . "/", $zipArchive);
- }
-
- }else{
- // Add the files
- $zipArchive->addFile($dir . $file);
-
- }
- }
- }
- }
- }
- // Creation de l'archive ZIP
- $zip = new ZipArchive;
- $res = $zip->open("compteX.zip", ZipArchive::CREATE);
- if(!$res){ echo"open fail"; }
- addFolderToZip("compteX/", $zip);
- $res = $zip->close();
- if(!$res)
- echo "Close failed =/";
- mkdir("unzip" );
- $zip = new ZipArchive;
- if ($zip->open("compteX.zip" ) === TRUE) {
- $zip->extractTo("unzip/" );
- $zip->close();
- echo 'ok';
- } else {
- echo 'échec';
- }
- ?>
|
Ceci était mon test, afin de verifier que ca marche, le probleme c'est que pour mon cas réel, le path de mon repertoire a zippé est "complex"
Code :
- addFolderToZip("../../../upload/compteX/", $zip);
|
Ma foi l'archive se crée, mais mal, quand je la decopresse, je me retrouve avec mes données dans un repertoir "upload", et meme pas dans le repertoire unzip, mais a la racine de son repertoire parent...
Je ne sais pas trop comment faire pour resoudre cela.
Si quelqu'un a une idée, merci d'avance !