Lister le contenu d'un repertoire sur le web

alphon5o -  
Yoan Messages postés 11905 Statut Modérateur -
Bonjour,
je souhaiterai obtenir de l'aide pour la realisation d'un listage du contenu d'un repertoire ( de preference en php) comme sur ce exemple https://dept-info.labri.fr/ENSEIGNEMENT/ . merci pour vos contribution .

1 réponse

Yoan Messages postés 11905 Statut Modérateur 2 332
 
Voici un truc que j'avais réalisé pour mes besoins personnels. Attention il est probable qu'il ait quelques bugs.
En l'occurrence il gère mal les noms de fichier contenant un point (sauf extension). Il n'y a pas de possibilité de tri. Puis d'autres trucs probablement. Le code est à adapter.

<?php
$ndf='index.php';	//Nom de ce script

function taille($file)
{
if(is_dir($file))
	{
	return "Dossier";
	break;
	}
else
	{
	$taille=filesize($file);
	if($taille<=1024)
		return "$taille octets";
	elseif($taille<=1024*1024)
		{
		$taille=round($taille/1024,2);
		return "$taille Kio";
		}
	elseif($taille<=(1024^3))
		{
		$taille=round($taille/1024/1024,2);
		return "$taille Mio";
		}
	else
		{
		$taille=round($taille/1024/1024/1024,2);
		return "$taille Gio";
		}
	}
}
?>
<html>
<head>
<title>Index</title>
<style>
.tableau {border-style:solid; background-color:#EFEFEF; border-width:3px; border-color:#ABCDEF; font-family:verdana, arial, sans-serif; font-size:11px; text-align:center}
</style>
</head>
<body>
<table class="tableau" border="1" align="center" width="60%">
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;Fichier&nbsp;&nbsp;&nbsp;&nbsp;</td><td>Extension</td><td>Poids</td><td>Derni&egrave;re modification</td></tr>
<?php
$mois=date("m-Y");
$today=date("d-m-Y",time());
$files=array();

$dir=opendir(".");	//Ouvrir le répertoire courant
while(false!==($file=readdir($dir)))
	{
	$poids=taille($file);	//Calculer le poids du fichier courant
	array_push($files,$file);	//Ajouter le fichier courant à la liste de fichiers
	$lastmod=getlastmod($file);
	$lastmod=date('M,d Y',$lastmod);
	if(is_file($file) AND $file!=$ndf)
		{
		$expfile=explode('.',$file);	//Séparer le nom de fichier de son extension
		$filename=$expfile[0];
		$ext=strtoupper($expfile[1]);
		echo "<tr><td><a href=\"$file\">$filename</a></td><td>$ext</td><td>$poids</td><td>$lastmod</td></tr>";
		}
	elseif(is_dir($file) AND $file!="." AND $file!="..")	//Ne pas rentrer les répertoires courant et parent dans le tableau
		{
		$ext="Dossier";
		$filename=$file;	//Conserve le nom de dossier
		if(is_dir($file)) $file='./'.$file;	//Ajouter un point/slash devant les dossiers
		echo "<tr><td><a href=\"$file\">$filename</a></td><td>$ext</td><td>$poids</td><td>$lastmod</td></tr>";
		}
	}
?>
</table>
</body>
</html>
0
alphon5o
 
salut yoan , j'ai tester ta reponse ça me parait tres interressant mais pas tout a fait suffisant. ça le fait pour un repertoire mais je voudrais qu'il le fasse recursivement c'est a dire si dans un repertoire il ya d'autre repertoire qu'il applique le meme traitement; merci
0
Yoan Messages postés 11905 Statut Modérateur 2 332
 
Tu veux lister dans la même page tous les fichiers du dossier courant et de ses sous-dossiers ?
Dans ce cas il faut faire de ceci une fonction récursive et rajouter une ou deux instructions pour rappeler la fonction dans le cas d'un dossier.

Je regarderai ça. Mais c'est à dire qu'il y a déjà plein de trucs à corriger là-dedans.
0
alphon5o > Yoan Messages postés 11905 Statut Modérateur
 
slt , je veux que seul le contenu du repertoire courant soit lister et si je clique sur un lien de la liste et que c'est un repertoire , son contenu est listé comme le repertoire superieur et ainsi de suite
0
Yoan Messages postés 11905 Statut Modérateur 2 332 > alphon5o
 
Heu, si tu utilises Apache tu as l'option Indexes qui fait ça très bien.
http://httpd.apache.org/docs/1.3/mod/core.html#directory
0
alphon5o > Yoan Messages postés 11905 Statut Modérateur
 
jai visité le site que tu ma proposé. Si je comprend bien il faudrai modifier le fichier de configuration d'apache. mais moi j'ai pas acces a ce fichier mais je pense qu'il serait possible de mettre a la racine de mon site un fichier .htaccess sauf que je ne sais pas comment m'y prendre donc si tas une idée dis moi comment faire svp. merci
0