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. 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);
    }
    ?>
    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. Contributeur
        merci
        une dernière chose : comment faire pour récupérer la taille de ces fichiers ?
        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. 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
            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. 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
                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. 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
                    merci
                    est-ce posssible de faire en sorte que quand on clique sur un fichier, il s'ouvre ?
                    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 ^^