PHP lister fichier

Résolu
Bonjour,
Existe-t-il une fonction php qui permette de lister tout les fichiers présents dans un dossier ?
merci
Configuration: Windows XP
Firefox 2.0.0.18

12 réponses

  1. 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 ^^
    1. Contributeur
      merci
      est-ce posssible de faire en sorte que quand on clique sur un fichier, il s'ouvre ?
      1. 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);
        ?>


        1. Contributeur
          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
          1. 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.
            1. Contributeur
              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 ?
              1. 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
                1. Contributeur
                  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
                  1. 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 ;)
                2. Contributeur
                  merci
                  une dernière chose : comment faire pour récupérer la taille de ces fichiers ?
                  1. 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...
                    1. 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);
                      }
                      ?>