ARTICLES | Applications | Best of | FAQ | Forums | VBScript | JScript | Livres | Liens | Contact | ACCUEIL

LA REFERENCE FRANCAISE DES DEVELOPPEURS ACTIVE SERVER PAGEs



Parcourir une arborescence avec le FileSystemObject
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.

Stéphane GAUZE 


Retour à la liste des articles

Hit-Parade  


FastCounter by bCentral