Afficher le contenu d'un repertoire en PHP

Résolu
Fayçal -  
 simon -
je veux afficher une liste des fichiers d'un repertoires en utilisant PHP, par exemple, sur mon site , j'ai un repertoire mp3 qui contient des mp3, je veux qu'une page "list.php" affiche le contenu de ce repertoire, merçi

si vous avez un autre astuce plus simple ça serait mieux, merçi

22 réponses

  • 1
  • 2
Résumé de la discussion

Afficher la liste des fichiers d'un répertoire avec PHP, par exemple un répertoire mp3, sur une page list.php qui affiche le contenu et propose une solution efficace. La solution principale consiste à ouvrir le répertoire avec opendir et à parcourir avec readdir, en séparant fichiers et dossiers puis en les triant avant d'afficher des liens cliquables. En alternative plus simple, on peut utiliser un script minimal qui lit chaque entrée puis affiche le nom du fichier, et on peut restreindre l'affichage à des extensions spécifiques comme HTML. Pour tester et déboguer, un serveur local comme WAMP peut faciliter le développement hors ligne, et vérifier les droits d'accès (CHMOD) peut éviter des blocages d'affichage.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 340
     
    tiens, regarde si ca te conviens, j'ai fait ca y'a quelques semaines sur ccm, je retrouve plus la version in line... mais tu auras pas de difficultés à le tester et a le mettre à ta guise :

    <?php
    $dir_nom = '.'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.'  --> ('point')
    $dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant
    $fichier= array(); // on déclare le tableau contenant le nom des fichiers
    $dossier= array(); // on déclare le tableau contenant le nom des dossiers
    
    while($element = readdir($dir)) {
    	if($element != '.' && $element != '..') {
    		if (!is_dir($dir_nom.'/'.$element)) {$fichier[] = $element;}
    		else {$dossier[] = $element;}
    	}
    }
    
    closedir($dir);
    
    if(!empty($dossier)) {
    	sort($dossier); // pour le tri croissant, rsort() pour le tri décroissant
    	echo "Liste des dossiers accessibles dans '$dir_nom' : \n\n";
    	echo "\t\t<ul>\n";
    		foreach($dossier as $lien){
    			echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";
    		}
    	echo "\t\t</ul>";
    }
    
    if(!empty($fichier)){
    	sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant
    	echo "Liste des fichiers/documents accessibles dans '$dir_nom' : \n\n";
    	echo "\t\t<ul>\n";
    		foreach($fichier as $lien) {
    			echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";
    		}
    	echo "\t\t</ul>";
     }
    ?>
    140
    1. damien
       
      bonjour,

      merci pour ce bout de script, il correspond bien à ce que je recherchais!

      parcontre je n'arrive pas à voir comment je pourrait ensuite faire pour supprimer un où plusieurs des fichiers parmis la liste..

      avec une case à cocher qui renseigne une fonction ulink mais bon... j'ai pas trop d'idée là...

      si qqun à un tuyau c cool.

      Merci encore pour la réponse.

      bye
      0
    2. someone
       
      ton code ma bcp servis mais j'ai eu du mal a rajoute une optien pour filré les fichier : commme php ou autre en premier j'utilise ce code :
       <?php
          
           function listing($repertoire){
         
           $fichier = array();
          
           if (is_dir($repertoire)){
          
           $dir = opendir($repertoire); //ouvre le repertoire courant désigné par la variable
           while(false!==($file = readdir($dir))){ //on lit tout et on récupere tout les fichiers dans $file
         
           if(!in_array($file, array('.','..'))){ //on eleve le parent et le courant '. et ..'
          
           $page = $file; //sort l'extension du fichier
           $page = explode('.', $page);
           $nb = count($page);
           $nom_fichier = $page[0];
           for ($i = 1; $i < $nb-1; $i++){
           $nom_fichier .= '.'.$page[$i];
           }
           if(isset($page[1])){
          $ext_fichier = $page[$nb-1];
          if(!is_file($file)) { $file = ''.$file; }
          
      	 }
           else 
      	 {
          if(!is_file($file)) { $file = ''.$file; } //on rajoute un "/" devant les dossier pour qu'ils soient triés au début
      	
      	
      	
           $ext_fichier = '';
      	
           }
          
           if($ext_fichier != 'php3' and $ext_fichier != 'db' ) { //utile pour exclure certains types de fichiers à ne pas lister
           array_push($fichier, $file);
           }
          }
           }
           }
          
      
      	
           natcasesort($fichier); //la fonction natcasesort( ) est la fonction de tri standard sauf qu'elle ignore la casse
           // et la date du téléchargement
      
            
          foreach($fichier as $value) {
      
      	
           echo '    <a href="'.rawurlencode($repertoire).'/'.rawurlencode(str_replace ('/', '', $value)).'"  target=\"_blank\">'.$value.'</a> <br />';
      	
      
      
      
           }
          
           }
          
           //exemple d'utilisation :
         
           listing('admin/UPLOAD/emploi/upload'); //chemin du dossier
      
         ?> 

      exp
      il marché tres bien localement mais une fois que j'ai mis le site sur le serveur j'ai eu des probleme de lien voici donc ce qu'il me donne exp : The requested URL /admin/UPLOAD/emploi/upload/emploi du temsp.pdf was not found on this server.

      puis j'ai adopter le tien et les liens marche trés bien apart que cette fois ci il affiche aussi le liens des page web.
      0
  • 1
  • 2