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
Configuration: Windows XP
Firefox 2.0.0.18

12 réponses

  1. xxkirastarothxx Messages postés 415 Statut Membre 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
  2. 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
  3. xxkirastarothxx Messages postés 415 Statut Membre 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. xxkirastarothxx Messages postés 415 Statut Membre 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
  7. 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
  8. xxkirastarothxx Messages postés 415 Statut Membre 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
  9. 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
    1. xxkirastarothxx Messages postés 415 Statut Membre 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
  10. 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
  11. xxkirastarothxx Messages postés 415 Statut Membre 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
  12. 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
  13. darkchristophetd Messages postés 1100 Date d'inscription   Statut Contributeur Dernière intervention   459
     
    merci a tous
    0