arbre
 

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>&nbsp;
  <table border="0" cellpadding=0 cellspacing="0">
    <tr>
      <th nowrap>&nbsp;</th>
      <th nowrap>&nbsp;Nom&nbsp;</th>
      <th nowrap>&nbsp;Taille&nbsp;</th>
      <th nowrap>&nbsp;Type&nbsp;</th>
      <th nowrap>&nbsp;Modifi&eacute;&nbsp;</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>&nbsp;</td>
      <td align=right nowrap>&nbsp;</td>
      <td align=right nowrap>&nbsp;</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>&nbsp;<a href="javascript:ChangeRep('<%= SubFolderObject.Name %>')"><%= SubFolderObject.Name %></a>&nbsp;</td>
      <td nowrap>&nbsp;</td>
      <td nowrap>&nbsp;</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>&nbsp;<a href="javascript:Memorise('<%= FileObject.Name%>')"><%= FileObject.Name %></a>&nbsp;</td>
      <td align=right nowrap>&nbsp;<%= FileObject.Size %>&nbsp;</td>
      <td align=left nowrap>&nbsp;<%= FileObject.Type%>&nbsp;</td>
      <td align=left nowrap>&nbsp;<%= FileObject.DateLastModified %>&nbsp;</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

Toutes les heures, le serveur contrôle que votre site est en ligne. En cas de problème, un mail vous est envoyé.
Vous avez l'habitude d'oublier les dates importantes? Oubli vous prévient gratuitement par email !

Page modifiée le 17/06/2010 283 visiteur(s) aujourd'hui
vide logo vide

Navigateur

droite