PHP lister fichier

Résolu/Fermé
darkchristophetd Messages postés 1100 Date d'inscription mardi 26 février 2008 Statut Contributeur Dernière intervention 14 novembre 2010 - 19 nov. 2008 à 12:09
darkchristophetd Messages postés 1100 Date d'inscription mardi 26 février 2008 Statut Contributeur Dernière intervention 14 novembre 2010 - 19 nov. 2008 à 17:02
Bonjour,
Existe-t-il une fonction php qui permette de lister tout les fichiers présents dans un dossier ?
merci
A voir également:

12 réponses

xxkirastarothxx Messages postés 380 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
19 nov. 2008 à 12:19
Google => recherche de PHP lister fichier
premier lien:
www.comscripts.com/sources/php.liste-des-fichiers-dun-dossier.51.html
Toute les réponses là....
Bravo pour la recherche ^^
0
darkchristophetd Messages postés 1100 Date d'inscription mardi 26 février 2008 Statut Contributeur Dernière intervention 14 novembre 2010 459
19 nov. 2008 à 12:26
merci
est-ce posssible de faire en sorte que quand on clique sur un fichier, il s'ouvre ?
0
xxkirastarothxx Messages postés 380 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
19 nov. 2008 à 12:33
Suffis de rajouter un lien ^^
<?php
$folder = "./";
$dossier = opendir($folder);
while ($Fichier = readdir($dossier)) {
  if ($Fichier != "." && $Fichier != "..") {
    $nomFichier = $folder."".$Fichier;
    echo '<a href="'.$nomFichier.'">'.$nomFichier.'</a><BR>';
  }
}
closedir($dossier);
?>


0
darkchristophetd Messages postés 1100 Date d'inscription mardi 26 février 2008 Statut Contributeur Dernière intervention 14 novembre 2010 459
19 nov. 2008 à 12:45
d'accord
mais quand je met ce code :
<?php
$folder = "../uploads";
$dossier = opendir($folder);
while ($Fichier = readdir($dossier)) {
  if ($Fichier != "." && $Fichier != "..")
  {
    $nomFichier = $folder."".$Fichier;
    echo '<a href="'.$nomFichier.'">'.$nomFichier.'</a><BR>';
  }
}
closedir($dossier);
?>

Il me met ça :

Warning: opendir(../uploads/) [function.opendir]: failed to open dir: Permission denied in /var/www/virtual/web-innovation.eg2.fr/htdocs/admin/uploads.php on line 31

Warning: readdir(): supplied argument is not a valid Directory resource in /var/www/virtual/web-innovation.eg2.fr/htdocs/admin/uploads.php on line 32

Warning: closedir(): supplied argument is not a valid Directory resource in /var/www/virtual/web-innovation.eg2.fr/htdocs/admin/uploads.php on line 39
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xxkirastarothxx Messages postés 380 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
19 nov. 2008 à 12:57
dans quel dossier se trouve le dossier upload? dans htdocs ?
Apparement c'est un problème de droits.
Serveur locale ? si oui tu dois modifier les droits par la commande chmod -XXX /ton/chemin/vers/upload
Sinon tu es chez un hébergeur ?
Si oui tu dois utiliser ton logiciel FTP pour modifier les droits (chmod) du dossier upload.
0
darkchristophetd Messages postés 1100 Date d'inscription mardi 26 février 2008 Statut Contributeur Dernière intervention 14 novembre 2010 459
19 nov. 2008 à 12:59
il se trouve dans le dossier qui contient la page et s'appelle en effet "uploads"
Je suis chez un hébergeur (espace gratuit 2)
J'ai mis le chmod à 733.
Combien il faut mettre ?
0
xxkirastarothxx Messages postés 380 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
19 nov. 2008 à 13:01
alors déjà modifie la ligne $folder = "../uploads";
essaye $folder = "./uploads";
ou $folder = "/uploads";
car ../ signifie que tu remonte d'un dossier; il va chercher ton dossier a cet endrois en ce moment:
[...]/htdocs/uploads
au lieu de [...]/htdocs/admin/uploads

Sinon essaye de mettre un chmod 777 (c'est le max) pour verifier si ça fonctionne, mais attention, tout les utilisateur on tout les droits, a toi de voir quel chmod te conviens le mieux (pour ça va voir ici: tu trouvera des explication sur l'utilisation du chmod:
https://fr.wikipedia.org/wiki/Chmod
http://www.siteduzero.com/tutoriel-3-36115-les-chmod.html
0
darkchristophetd Messages postés 1100 Date d'inscription mardi 26 février 2008 Statut Contributeur Dernière intervention 14 novembre 2010 459
19 nov. 2008 à 13:02
ah c bon
j'ai mis le chmod a 777
et ça marche avec ce code :
<?php
$folder = "../uploads/";
$dossier = opendir($folder);
while ($Fichier = readdir($dossier)) {
  if ($Fichier != "." && $Fichier != "..")
  {
    $nomFichier = $folder."".$Fichier;
    echo '<a href="../uploads/'.$nomFichier.'">'.$nomFichier.'</a><BR>';
  }
}
closedir($dossier);
?>

merci
0
xxkirastarothxx Messages postés 380 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
19 nov. 2008 à 13:07
Si t'as pas envie de te prendre la tête avec les chmod, mais si tu souhaite quand même garder un minimum de sécurité, change tes chmod petit a petit:

777 => 776 => 775 => 774
77X =>76X => 75X => 74X

le premier chiffre donne les droits au créateur du dossier (normalement toi)
le deuxieme au groupe du créateur
le troisieme au reste <= c'est surtout celui la qu'il est important de réduire, le plus petit (temps que ça fonctionne) serra le mieux ;)

Bonne chance ;)
0
darkchristophetd Messages postés 1100 Date d'inscription mardi 26 février 2008 Statut Contributeur Dernière intervention 14 novembre 2010 459
19 nov. 2008 à 13:40
merci
une dernière chose : comment faire pour récupérer la taille de ces fichiers ?
0
xxkirastarothxx Messages postés 380 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
19 nov. 2008 à 14:10
Tu dois pas chercher beaucoup quand même hein, c'est le genre de question ou l'on trouve plus rapidement la reponse que le temps de la poser en plus...
Google => taille fichier php
Et Hop on trouvela commande php qui permet ça: filesize();
on trouve aussi des script qui retaille automatiquement la taille en Ko ou Go

Dans ton cas modifie la ligne:
echo '<a href="'.$nomFichier.'">'.$nomFichier.'</a><BR>';
par:
echo '<a href="'.$nomFichier.'">'.$nomFichier.' - '.filesize($nomFichier).'</a><BR>';

La taille serra 0 pour les dossiers et en octets pour les fichiers.
Si tu veux, tu peux definir des condition d'affichage: par exemple avec if(!is_dir()) pour verifier qu'il ne s'agit pas d'un dossier, dans quel cas on n'affichera pas la taille
ou tu peux tester la taille aussi: si ça depasse 1024 tu divise par 1024 et tu affiche en Ko au lieu d'en octets...
0
Bonjour la réponse à ta question figure dans le manuel de php. Mais pour t'éclairer davantage, il faut utiliser les fonctions "opendir" et readdir:

<?php
// Notez que !== n'existait pas avant 4.0.0-RC2

if ($handle = opendir('/chemin/vers/fichiers')) {
echo "Directory handle: $handle\n";
echo "Files:\n";

/* Ceci est la façon correcte de traverser un dossier. */
while (false !== ($file = readdir($handle))) {
echo "$file\n";
}

/* Ceci est la MAUVAISE façon de traverser un dossier. */
while ($file = readdir($handle)) {
echo "$file\n";
}

closedir($handle);
}
?>
0
darkchristophetd Messages postés 1100 Date d'inscription mardi 26 février 2008 Statut Contributeur Dernière intervention 14 novembre 2010 459
19 nov. 2008 à 17:02
merci a tous
0