Trucsweb.com

Trucsweb.com

ASP

Introduction à Scripting.FileSystemObject

RDFFav

Introduction à Scripting.FileSystemObject - Vérifier si un répertoire/fichier existe et les propriétés

Manipuler des fichiers texte peut être très pratique. Un fichier texte complète à merveille une base de données. Par exemple, tous mes tutoriels sont en fichier texte et une clé dans ma base de données fait la relation à chaque fichier texte. L’usage d’un fichier texte peut, selon le cas être la meilleure façon de gérer des données...vérifier répertoire fichier existe informations object objets scripting.filesystemobject sous-répertoires createobject fileexists folderexists server.mappath chemin accès getfilename getfile getfolder. name size shortname parent fso readonly filesIntroduction à Scripting.FileSystemObject - Vérifier si un répertoire/fichier existe et les propriétés

  • · Niveau : INTERMÉDIAIRE
  • · Compatibilité : IIS 4

Manipuler des fichiers texte peut être très pratique. Un fichier texte complète à merveille une base de données. Par exemple, tous mes tutoriels sont en fichier texte et une clé dans ma base de données fait la relation à chaque fichier texte. L’usage d’un fichier texte peut, selon le cas être la meilleure façon de gérer des données, de plus un fichier texte est portable ce qui permet à un serveur d’instant de récupérer l’information sans un accès spécifique. Ce tutoriel de base vous indiquera comment obtenir de l’information sur vos fichiers et vos répertoires.

Avant toute chose vous devez déterminer si vos fichiers texte sont privés ou publics. Un fichier texte stocké dans votre répertoire Web, au même titre que vos pages HTML, peut être vu par n’importe qui. Par contre vous pouvez créer un répertoire sous la racine de votre répertoire Web pour limiter l’accès à votre fichier texte. Seuls votre serveur, et les scripts qui roulent sur le serveur, pourront avoir accès à votre fichier. C’est d’ailleurs la meilleure façon de procéder, notamment avec une base de données.

Bien que vous pouvez manipuler vos fichiers texte à l’aide de l’objet « Scripting.FileSystemObject », vous pouvez aussi obtenir des informations sur tous types de fichiers ou même sur les répertoires et sous répertoires. Pour ce faire vous devez déclarer votre objet :

set fs = CreateObject("Scripting.FileSystemObject")
%27 Traitement
set fs = nothing

Vérifier si un fichier ou un répertoire existe.
Il existe deux méthodes soit : FileExists et FolderExists.

Dim sf, nFile, nRep

set fs = CreateObject("Scripting.FileSystemObject")
nFile = Server.MapPath(".") & "\" & "fichier.ext"
if  fs.FileExists(nFile) then
   %27 le fichier existe
else
   %27 le fichier n’existe pas
end if

nRep = Server.MapPath(".") & "\" & "repertoire"
if  fs.FolderExists(nRep) then
   %27 le répertoire existe
else
   %27 le répertoire n’existe pas
end if
set fs = nothing

Note : Server.MapPath(".") retourne le chemin d’accès ou " path " du fichier asp exécuté, "." indique le répertoire courant mais vous pouvez spécifier un sous répertoire, "sous-rep/sous-rep"

Les méthodes

Une fois le fichier ou le répertoire identifié vous pouvez les manipuler à l’aide des méthodes suivantes : CopyFile, CopyFolder, DeleteFile, DeleteFolder, MoveFile, MoveFolder mais ce qui nous intéresse ici c’est les méthodes GetFileName, GetFile et GetFolder.


" GetFileName " retourne le nom du fichier.

Ex : fs.GetFileName(nFile)


" GetFile " retourne les informations sur un fichier

Ex :
set fs = CreateObject("Scripting.FileSystemObject")
nFile = Server.MapPath(".") & "\" & "fichier.ext"
if  fs.FileExists(nFile) then
   set MonFichier = fs.GetFile(nFile)
   %27 afficher les informations à l’aide des propriétés
   %27 voir plus bas.
 set MonFichier = nothing
else
   %27 le fichier n’existe pas
end if
set fs = nothing

Il ne reste plus qu’à afficher les informations à l’aide des propriétés.

response.write "Nom: " & MonFichier.Name
response.write "Poid (bytes): " & MonFichier.Size
response.write "Type: " & MonFichier.Type
response.write "Nom (en format 8.3): " & MonFichier.ShortName
response.write "Lecteur: " & MonFichier.Drive
response.write "Répertoire parent: " & MonFichier.ParentFolder
response.write "Chemin d’accès: " & MonFichier.Path
response.write "Date de création: " & MonFichier.DateCreated
response.write "Date du dernier accès: " & MonFichier.DateLastAccessed
response.write "Date de la dernière modification: " & MonFichier.DateLastModified


La propriété " Attributes " retourne quant à elle un numéro
response.write "Attributes: " & MonFichier.Attributes

sp
Constante Valeur Description
Normal 0 Fichier normal
ReadOnly 1 Fichier en lecture seule
Hidden 2 Fichier caché
System 4 Fichier système
Volume 8 Le nom " label " du lecteur
Directory 16 Répertoire
Archive 32 Fichier archive
Alias 64 Raccourci
Compressed 128 Fichier compressé

Noter que vous pouvez changer le nom d’un fichier en modifiant la propriété " name " MonFichier.Name = nouveau_nom


" GetFolder " retourne les informations sur un répertoire

Ex :
set fs = CreateObject("Scripting.FileSystemObject")
nRep = Server.MapPath(".") & "\" & "repertoire"
if  fs.FolderExists(nep) then
   set MonRep = fs. GetFolder(nRep)
   %27 afficher les informations à l’aide des propriétés
   %27 voir plus bas.
   set MonRep = nothing
else
   %27 le fichier n’existe pas
end if
set fs = nothing

Il ne reste plus qu’à afficher les informations à l’aide des propriétés.

response.write "Attributs: " & MonRep.Attributes
response.write "Nom: " & MonRep.Name
response.write "Poid du répertoire (bytes): " & MonRep.Size
response.write "Le répertoire parent: " & MonRep.ParentFolder
response.write "Fichier racine ou " root ": "
if MonRep.IsRootFolder then
  response.write "Oui"
else
  response.write "Non"
end if
response.write "Chemin d’accès: " & MonRep.Path
response.write "Nom en format (8.3): " & MonRep.ShortName
response.write "Date de création: " & MonRep.DateCreated
response.write "Date du dernier accès: " & MonRep.DateLastAccessed
response.write "Date de la dernière modification: " & MonRep.DateLastModified

Liste ou " collection " des fichiers et des répertoires à l’aide des propriétés SubFolder et files.
Pour obtenir la liste de tous les fichiers vous devez créer une " collection "

Ex :
set fs = CreateObject("Scripting.FileSystemObject")
nRep = Server.MapPath(".") & "\" & "Répertoire"
set MonRep = fs.GetFolder(nRep)
set ColFiles = MonRep.Files
for each folderItem in ColFiles
    response.write "Fichier: " & folderItem.path
next
set ColFiles = nothing
set MonRep = nothing
set fs = nothing

Pour obtenir la liste de tous les répertoires vous devez créer une " collection "

Ex :
set fs = CreateObject("Scripting.FileSystemObject")
nRep = Server.MapPath(".") & "\" & "repertoire"
set MonRep = fs.GetFolder(nRep)
set ColRep = MonRep.SubFolders
for each folderItem in ColRep
    response.write "Répertoire: " & folderItem.path
next
set ColRep = nothing
set MonRep = nothing
set fs = nothing

Note : vous pouvez créer un sous-répertoire à l’aide de la méthode AddFolders Ex : MonRep.AddFolders nom_du_repertoire

Code complet pour obtenir la hiérarchie d’un répertoire avec ses répertoires et les fichiers de chaque répertoire. Avec extraction du "path" lors de l’affichage.

Ex :
set fs = CreateObject("Scripting.FileSystemObject")
nRep = "Répertoire Racine (Roots)"
set MonRep = fs.GetFolder(nRep)
set ColRep = MonRep.SubFolders
for each folderItem in ColRep
    Epure = Split(folderItem.path, nRep, -1, 1)
    Response.Write "Répertoire: " & Epure(1) & "<br>"
    set MesFichiers = fs.GetFolder(folderItem.path)
    set ColFiles = MesFichiers.Files
    for each FilesItem in ColFiles
        Epure = Split(FilesItem.path, folderItem.path, -1, 1)
        Response.Write "- Fichier: " & Epure(1) & "<br>"
    next
next
set MesFichiers = nothing
set ColFiles = nothing
set ColRep = nothing
set MonRep = nothing
set fs = nothing

Conclusion
Vous pouvez obtenir pratiquement toute l’information disponible sur vos répertoires et fichiers. Les exemples sont complets, ajouter & "
" au bout de chaque response.write et vous aurez un rapport complet. Il reste maintenant la manipulation des fichiers à l’aide des méthodes " Copy, move, delete " et surtout la manipulation des fichiers texte à l’aide de la méthode OpenAsTextStream que nous verrons dans un autre tutoriel.

Django (Oznog) Blais
Dernière mise à jour :

Commentaires

  • Salut! Je ne sais comment vous dire merci autrement pour le tuto. A présent ma préoccupation se présente comme suit: Comment adapter ce code pour faire l'UPLOAD d'un fichier vers un serveur http (qui ne demande aucune authentification)? J'en galère! A l'attente d'une suite.
    64x64
    Super
    Date (GMT) : 2015-03-21 1:49:39 (UTC +0000)

    • Salut, 1. Le FSO permet de manipuler des fichiers sur le serveur, sans plus. Il n'y a AUCUNE méthode pour transférer un fichier sur un serveur et encore moins entre serveurs. Ce n'est pas le bon tutoriel pour votre question. 2. Il faut savoir qu'un fichier est téléverser en BINAIRE sur un serveur. De là la grande complexité légendaire de se problème classique. Sans parler que la plupart des solutions (anglophone) passe par l'ASCII. Or donc pour un francophone, on doit convertir du ASCII à l'UNICODE et vice versa. Causant plusieurs problèmes, notamment de lenteur. D'ailleurs même les meilleurs solutions ne font souvent que simuler la sorti en nous servant des entités HTML!! 3. Or donc la solution est de passer par un objet COM (dll) pré-installé sur le serveur. Plusieurs solutions payantes, souvent ASCII, plus ou moins performantes, existe : - AspUpload de Persists Software (http://www.persits.com/) - FileUP de SoftArtisans (http://www.softartisans.com/) - ASP Upload Component - csASPUpload - Chestysoft (http://www.chestysoft.com/upload/) 4. Pour une solution gratuite en pure ASP, il suffit de récupérer la requête exactement comme une champ de formulaire mais avec la méthode « Request.BinaryRead ». Et utiliser le VBScript pour convertir le tout. Bon, ce n'est pas facile d'utiliser cette méthode. Il faut travailler en binaire, reconstruire la chaine avec notamment un problème de lenteur drastique à cause de la concaténation VBScript. Sans parler de l'encodage. - Request.BinaryRead(Request.TotalBytes) Le Web 2 a tuer ce genre de développement Freelance mais j'ai trouvé un bon exemple aussi vieux que ce tutoriel (15 ans!!). Tu y trouvera tous les secrets de la manipulation binaire en ASP. - Upload Files Without COM v2 par Lewis E. Moten III http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=7361&lngWId=4 P.S. Utilisez S.V.P. le forum pour poser une question qui n'est pas un commentaire.
      64x64
      oznog
      Date (GMT) : 2015-03-21 11:44:25 (UTC +0000)

      Ajouter un commentaire
      Votre adresse de courriel ne sera pas publiée. * L'astérisque indique les champs obligatoires.
      Votre évaluation du tutoriel

             Visites : 23476 - Pages vues : 84107
      X

      Trucsweb.com Connexion

      Connexion

      X

      Trucsweb.com Mot de passe perdu

      Connexion

      X

      Trucsweb.com Conditions générales

      Conditions

      Responsabilité

      La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

      Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

      Droit applicable et juridiction compétente

      Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

      X

      Trucsweb.com Trucsweb

      X

      Trucsweb.com Glossaire

      X

      Trucsweb.com Trucsweb

      X

      Trucsweb.com Trucsweb

      Conditions

      Aucun message!

      Merci.

      X
      Aucun message!
      X

      Trucsweb.com Créer un compte

      Créer un compte

      .
      @