|
La plupart des serveurs Web tels que PWS ou IIS possèdent un mécanisme
de génération d’un fichier d’index qui affiche le contenu du répertoire
courant sous forme de liste. Toutefois, il est parfois utile d’implémenter
soi-même cette fonctionnalité. Supposons que vous offriez sur votre
site une interface permettant aux internautes d’envoyer certains
types de fichiers dans un répertoire d’upload. Vous souhaiterez
probablement administrer ces fichiers à distance depuis votre
navigateur sans avoir à vous connecter par FTP. Pour parcourir notre
arborescence, nous allons utiliser le FileSystemObject. Créons d’abord une
page asp que nous appellerons arborescence.asp.
<%
response.expires = "-1" %>
<html>
<body>
<%
Dim dossier, chemin, dossierParent
Set
objFs = Server.CreateObject("Scripting.FileSystemObject")
Nous créons ici
une instance du composant FileSystemObject
sur le serveur.
dossier
= Request.QueryString("dossier")
La variable
dossier contient le chemin du répertoire virtuel à parcourir; sa
valeur par défaut est la racine de votre “home directory” ou répertoire
de base.
chemin
= Server.MapPath(dossier&"/")
Nous
utilisons la méthode MapPath
de l’objet Server
qui permet de retrouver le
chemin réel correspondant au répertoire virtuel.
set
objDossier = objFs.getFolder(chemin)
Ici
nous créons un objet Folder qui possède des propriétés de
manipulation des répertoires.
if
dossier <> "" Then
dossierParent = Left(dossier, inStrRev(dossier, "/")-1)
%>
<a href="arborescence.asp?dossier=<%=dossierParent%>">Répertoire
parent</a>
<p>
<% end if %>
On
affiche un lien vers le répertoire parent uniquement si on ne se
trouve pas à la racine. Mais auparavant, il nous faut supprimer la
partie de la chaîne qui correspond au dernier répertoire.
<p><h2><%=objDossier.Name%></h2>
<h3>Dossiers</h3>
<%
for each sousDossier in objDossier.SubFolders
%>
<a
href="arborescence.asp?dossier=<%=dossier&"/"&sousDossier.Name%>">
<%=SousDossier.Name%></a>
<br>
<%
next
%>
Nous parcourons
la collection des sous-répertoires avec une boucle For…Next en
utilisant la propriété SubFolders. Nous créons un lien vers chaque
sous-répertoire en ajoutant leur nom au chemin virtuel contenu dans
la variable dossier.
<p><hr><p>
<h3>Fichiers</h3><p>
<%
for
each Fichier in objDossier.Files
%>
<a
href="<%=dossier&"/"&Fichier.Name%>">
<%=Fichier.Name%></a><br>
<%
next
Set objFs = Nothing
Set objDossier = Nothing
%>
Et
pour terminer, nous récupérons tous les fichiers du répertoire
courant toujours avec la même boucle For…Next, mais cette fois en
utilisant la propriété Files. Le
lien pointe ici sur le fichier lui-même, puisque nous demandons au
navigateur de l’ouvrir directement.
</body>
</html>
On aurait pu aller plus loin dans cet exemple en récupérant d’autre
informations utiles du système de fichiers, comme la date de dernière
modification ou le type du fichier. Vous pouvez même importer à la
volée des fichiers texte dans une base de données, par exemple. Seul
bémol : l’exploration d’une arborescence de serveur reste étroitement
liée aux droits accordés par l’administrateur.
|