Sélection de fichier
Il est parfois nécessaire dans la partie administrative de préciser le nom et le chemin complet d' un fichier de son serveur. Les fautes de frappes sont notre pire ennemi dans ce cas là. Je vous propose un petit fichier qui va vous permettre de naviguer sur votre serveur et de sélectionner le fichier de votre choix.
Pour lancer la fenêtre de navigation,
il faut utiliser la les paramètres suivants : navigateur.asp?ouvre=depart.es&RepDepart=/naviguer/ "ouvre" désigne le nom de la forme et du champ texte dans lequel il faudra insérer la sélection de l' utilisateur."RepDepart"
désigne le répertoire de départ que doit afficher la fenêtre.
Le source
Parcourons ligne après ligne le fichier navigateur.asp
<% option explicit%>
L' option explicite est facultative. Cependant il est fortement conseillé de la mettre.
Cela vous oblige à déclarer toutes les variables, mais en contrepartie, cela vous évite des erreurs lorsque vous écrivez le nom de vos variable. C' est tellement vite fait d' écrire FlieObject
à la place de FileObject.
<%
Dim StrOuvre
StrOuvre=Request("ouvre")
%>
Il faut récupérer le nom du champ de saisie texte dans lequel il faudra mettre le résultat de la sélection
<html>
<head>
<title>Navigateur</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Quelques routines en javascript sont nécessaires.
ChangeRep mémorise le répertoire dans lequel le visiteur veut se rendre et lance le submit de la forme.
<script language="JavaScript" type="text/JavaScript">
function ChangeRep(chemin)
{
document.Change.VarRepertoire.value=document.Change.VarRepertoire.value+chemin;
document.Change.submit()
}
La fonction Remonte mémorise le chemin du répertoire parent et lance le submit de la forme.
function Remonte(chemin)
{
document.Change.VarRepertoire.value=chemin;
document.Change.submit()
}
La fonction Memorise met le chemin et le nom du fichier sélectionner dans le champ texte de la fenêtre appelant.
function Memorise(Fichier)
{
opener.document.<%=StrOuvre%>.value = document.Change.VarRepertoire.value+Fichier
self.close()
}
</script>
</head>
<body>
Les
variables nécessaires à la suite du programmes sont :
- FileSystemObject : FlieObject qui permet de naviguer dans le système de fichiers
- FileObject : L' objet qui contiendra les fichiers du répertoire sélectionné
- FolderObject : L' objet qui contiendra le répertoire sélectionné
- SubFolderObject : L' objet qui contiendra les répertoires du répertoire sélectionné
- StrRepCourrant : Chaîne de caractère désignant le répertoire courant
- StrRepParent : Chaîne de caractère désignant le répertoire parent
- StrRepDepart : Chaîne de caractère désignant le répertoire de départ
<%
Dim FileSystemObject
Dim FileObject
Dim FolderObject
Dim SubFolderObject
Dim StrRepCourrant
Dim StrRepParent
Dim StrRepDepart
Il faut d' abord récupérer le répertoire de départ.
Si le répertoire n' est pas indiqué, ce sera le répertoire principal qui sera choisi.
Le répertoire est formaté correctement.
StrRepDepart = Request("RepDepart")
if StrRepDepart="" then RepDepart="/"
if right(StrRepDepart,1)<>"/" then StrRepDepart = StrRepDepart+"/"
Le répertoire qui est en train d' être visité est récupéré et formaté
StrRepCourrant = Request("VarRepertoire")
if StrRepCourrant="" then StrRepCourrant = StrRepDepart
if StrRepCourrant="//" then StrRepCourrant = "/"
if right(StrRepCourrant,1)<>"/" then StrRepCourrant = StrRepCourrant+"/"
Définition du répertoire parent
if StrRepCourrant = "/" then
StrRepParent =StrRepCourrant
else
StrRepParent =Left(StrRepCourrant, len(StrRepCourrant)-1)
StrRepParent =Left(StrRepParent, inStrRev(StrRepParent, "/")-1)
end if
Création de l' objet FileSystemObject
qui permettra la navigation dans les répertoires du serveur.
Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
Set FolderObject = FileSystemObject.GetFolder(server.MapPath(StrRepCourrant))
%>
La forme qui transmettra les données d' une page à l' autre se compose :
- RepDepart : champ texte pour transmettre le répertoire de départ
- VarRepertoire : champ texte pour transmettre le répertoire de navigation
- ouvre : champ texte pour transmettre le nom du champ texte qui recevra la sélection
<form action="/ASP/briques/naviguer/exemple/navigateur.asp" method="Post" name="Change" id="Change">
<input name="RepDepart" type="hidden" value="<%=StrRepDepart%>">
<input name="VarRepertoire" type="hidden" value="<%=StrRepCourrant%>">
<input name="ouvre" type="hidden" value="<%=StrOuvre%>">
<img src="/ASP/briques/naviguer/exemple/rep.gif" width="20" height="17"><b><%=StrRepCourrant%></b><br>
<table border="0" cellpadding=0 cellspacing="0">
<tr>
<th nowrap> </th>
<th nowrap> Nom </th>
<th nowrap> Taille </th>
<th nowrap> Type </th>
<th nowrap> Modifié </th>
</tr>
Si le répertoire courant est plus grand que le répertoire
de départ, on affichera la possibilité de remonter d'un répertoire.
Le lien est appel à la fonction javascript nommée Remonte décrite plus haut.
<%
If StrRepCourrant>StrRepDepart Then
%>
<tr>
<td align=right nowrap><img src="/ASP/briques/naviguer/exemple/monte.gif" width="20" height="17"></td>
<td align=left nowrap><a href="javascript:Remonte('<%= StrRepParent %>')">..</a></td>
<td align=right nowrap> </td>
<td align=right nowrap> </td>
<td align=right nowrap> </td>
</tr>
<%
End If
Affichage de différents répertoires contenus dans le répertoire actuel. Chaque lien point vers la fonction javascript ChangeRep
For Each SubFolderObject in FolderObject.SubFolders
%>
<tr>
<td nowrap><img src="/ASP/briques/naviguer/exemple/rep.gif" width="20" height="17"></td>
<td nowrap> <a href="javascript:ChangeRep('<%= SubFolderObject.Name %>')"><%= SubFolderObject.Name %></a> </td>
<td nowrap> </td>
<td nowrap> </td>
<td nowrap><%= SubFolderObject.DateLastModified %></td>
</tr>
<%
Next
Affichage de différents fichiers contenus dans le répertoire actuel. Chaque lien point vers la fonction javascript Memorise
For Each FileObject in FolderObject.Files
%>
<tr>
<td align=right nowrap><img src="/ASP/briques/naviguer/exemple/fichier.gif" width="20" height="17"></td>
<td align=left nowrap> <a href="javascript:Memorise('<%= FileObject.Name%>')"><%= FileObject.Name %></a> </td>
<td align=right nowrap> <%= FileObject.Size %> </td>
<td align=left nowrap> <%= FileObject.Type%> </td>
<td align=left nowrap> <%= FileObject.DateLastModified %> </td>
</tr>
<%
Next
%>
</table>
</form>
</body>
</html>
Ce n' est pas plus compliqué que cela. Testez ce petit programme à partir du lien ci dessous
Rechercher
Sources dans un fichier ZIP
|