Hello,
J'ai développé un bout de code permettant de Zipper un dossier avec tous les sous-dossiers et fichiers.
Le zip est bien créé et semble contenir tout ce qu'il faut.
Le problème est qu'il met tous les sous-dossiers au niveau du root de l'archive, et ne respecte donc pas l'arborescence d'origine.
Je ne comprends pas pourquoi, il me semble que mon code descend d'un niveau dans l'arborescence à chaque fois.
Auriez-vous une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 <html> <?php // Function to recursively add a directory, // sub-directories and files to a zip archive $Namezip='E:/TEST PHP/A/test.zip'; $FolderToZip='E:/TEST PHP/Folderazipper/'; $NameFolderToZip=basename($FolderToZip); $zip = new ZipArchive; $zip->open($Namezip,ZipArchive::CREATE); function addFolderToZip($FolderToZip, $Namezip, $zip){ $NameFolderToZip=basename($FolderToZip); echo 'Zippage du dossier '.$NameFolderToZip."<br><br>"; //Test sur le directory if (is_dir($FolderToZip)) { //Test sur l'ouverture du directory if ($folderhook = opendir($FolderToZip)) { echo 'Situé dans le path '.$FolderToZip."<br><br>"; //Test sur la creation de l'archive echo 'Creation de l\'archive ' .$Namezip ."<br><br>"; //Ajout du directory dans l'archive if($zip->addEmptyDir($NameFolderToZip)) { echo 'Création du dossier racine '.$NameFolderToZip."<br><br>"; // Loop through all the files while (($file = readdir($folderhook)) !== false) { echo 'I read the files '.$file."<br><br>"; //If it's a folder, run the function again! if(!is_file($FolderToZip . $file)){ // Skip parent and root directories echo 'this is a folder '.$FolderToZip . $file."<br><br>"; if( ($file !== ".") && ($file !== "..")){ addFolderToZip($FolderToZip . $file . "/", $Namezip. $file . "/", $zip); echo 'Je passe dedans'."<br><br>"; } else {echo 'Fake directory'."<br><br>";} } else{ // Add the files $zip->addFile($FolderToZip .$file, $NameFolderToZip.'/' . $file); echo 'I add the files'."<br><br>"; } } } else echo 'Impossible to create a new directory in archive'; echo 'archive créée !'."<br><br>"; } else echo 'Impossible to open directory'."<br><br>"; } else echo 'This is not a directory'."<br><br>"; } addFolderToZip($FolderToZip, $Namezip,$zip); $zip->close(); ?> </html>
Partager