PHP lister fichier

Résolu
darkchristophetd Messages postés 1100 Date d'inscription   Statut Contributeur Dernière intervention   -  
darkchristophetd Messages postés 1100 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Membre Dernière intervention   40
 
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   Statut Contributeur Dernière intervention   459
 
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   Statut Membre Dernière intervention   40
 
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   Statut Contributeur Dernière intervention   459
 
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   Statut Membre Dernière intervention   40
 
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   Statut Contributeur Dernière intervention   459
 
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   Statut Membre Dernière intervention   40
 
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   Statut Contributeur Dernière intervention   459
 
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   Statut Membre Dernière intervention   40
 
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   Statut Contributeur Dernière intervention   459
 
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   Statut Membre Dernière intervention   40
 
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
console
 
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   Statut Contributeur Dernière intervention   459
 
merci a tous
0