ZipArchive - Ne pas mettre les dossiers courants et parents dans l'arborescence

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : ZipArchive - Ne pas mettre les dossiers courants et parents dans l'arborescence

Re: ZipArchive - Ne pas mettre les dossiers courants et parents dans l'arborescence

par JME44 » 25 oct. 2020, 19:09

Merci

Re: ZipArchive - Ne pas mettre les dossiers courants et parents dans l'arborescence

par Spols » 25 oct. 2020, 15:14

le prefix @ avant une fonction évite simplement l'affichage d'erreur liè à cette fonction.

je déconseille en phase de test, et en phase de prod, il vaut mieux mettre un catch try pour capture l'erreur mais c'est une pratique répandue pour certaine fonction

Re: ZipArchive - Ne pas mettre les dossiers courants et parents dans l'arborescence

par JME44 » 25 oct. 2020, 14:04

Bonjour,

altozinzin écrit @readdir comme je l'ai vu par ailleurs.
J'ai utilisé @readdir et readdir et obtenu le même résultat. (je suis en 7.2)

Que change le préfixe @ devant une fonction ?

Merci

Re: ZipArchive - Ne pas mettre les dossiers courants et parents dans l'arborescence

par altozinzin » 10 août 2019, 10:40

Je me permets de remonter le sujet pour voir si quelqu'un à la solution. Merci

Re: ZipArchive - Ne pas mettre les dossiers courants et parents dans l'arborescence

par altozinzin » 16 juil. 2019, 21:20

Voici le code d'appel de la commande:
// on commence à creer l'archive
	
	$dossier_sortie = "./zips/".$id.".zip";
	$zip = new ZipArchive();
	 $zip->open($dossier_sortie, ZipArchive::CREATE|ZipArchive::OVERWRITE);
	 
	 
	 // on scanne le dossier
 $Directory = $_POST['chemin']."/".$_POST['nom_fichier'];

  
 ScanDirectoryZip($Directory);

  
  $zip->close();

le $_POST['chemin'] est un chemin relatif

Re: ZipArchive - Ne pas mettre les dossiers courants et parents dans l'arborescence

par Saian » 16 juil. 2019, 18:47

Salut, il n'y a pas vraiment de logique à cela si ce n'est que lors de l'appel initial à ScanDirectoryZip tu fasses par exemple un ScanDirectoryZip('/'). On ne voit d'ailleurs pas cet appel initial ni la manière dont tu initialises la variable $zip.

Re: ZipArchive - Ne pas mettre les dossiers courants et parents dans l'arborescence

par altozinzin » 15 juil. 2019, 17:22

Je précise: j'utilise 7Zip et il fonctionne normalement pour les autres archives

Re: ZipArchive - Ne pas mettre les dossiers courants et parents dans l'arborescence

par altozinzin » 15 juil. 2019, 17:21

Je ne pense pas.
J'ai un plus de précision:

Ce me faisait ça quand je testais le site en localhost.

J'ai testé en le mettant sur un serveur Linux en local, là y'a carrément toute l’arborescence qui apparaît.
Du genre, un dossier "_", puis un dossier "Volume1", puis web, puis www, ...

Re: ZipArchive - Ne pas mettre les dossiers courants et parents dans l'arborescence

par @rthur » 15 juil. 2019, 14:06

"." représente le dossier courant.
".." représente le dossier parent.
Es-tu sûr que ce n'est pas ton logiciel qui lit les fichiers zip qui te les fait apparaitre automatiquement ?

ZipArchive - Ne pas mettre les dossiers courants et parents dans l'arborescence

par altozinzin » 14 juil. 2019, 10:53

Salut à tous.
Voila, j'ai codé un petit bout de code en m'inspirant d'autres codes. Le but: créer un fichier ZIP qui contienne tous les fichiers d'un dossier, en respectant l'arborescence et de manière récursive pour les sous-dossiers.

Le code marche plutôt bien mais, quand j'ouvre l'archive, j'ai un dossier ".", qui contient un dossier "_" qui lui même contient enfin le dossier scanné.
Ma question: qu'est-ce qui "merde" dans mon code qui me créé ces deux dossiers un peu gênant. Sinon le code est fonctionnel, pas de soucis de ce côté là.
D'avance merci
function ScanDirectoryZip($Directory){

global $zip;

$MyDirectory = opendir($Directory) or die('Erreur');
while($Entry = @readdir($MyDirectory)) {
	// si c'est un dossier, on le créé dans le zip
if(is_dir($Directory.'/'.$Entry) && $Entry != '.' && $Entry != '..') {
	
$zip->addEmptyDir($Directory.'/'.$Entry);
ScanDirectoryZip($Directory.'/'.$Entry);

}
// si c'est un fichier, on l'ajoute à l'archive
else if ($Entry != '.' && $Entry != '..'){

$zip->addFile($Directory."/".$Entry);

}

}
closedir($MyDirectory);
}