Récupérer un fichier sur un serveur FTP sans composant
Techniques
Cette section permet de regrouper un ensemble de techniques ou de scripts qui ont l'originalité d'arriver
à résoudre une difficulté avec le moindre effort ou qui sont particulièrement efficaces...
' Script original : FTP via ASP without using 3rd-party components
' Ben Meghreblian 15th Jan 2002
' benmeg at benmeg dot com / http://benmeg.com
Techniques / Récupérer un fichier sur un serveur FTP sans composant
- Comment récupérer un fichier sur un serveur FTP sans composant:
Ce tutorial a pour but de montrer comment il est possible de récupérer un fichier sur un répertoire ftp sans utiliser de composant.
Ce script suppose que le fichier à uploadé du serveur ftp le sera dans le répertoire courant. Vous pouvez utiliser un joker pour la fonction ftp_files_to_put comme *.txt par exemple.
C'est l'activeX : wshom.ocx, "C:\winnt\system32\wshom.ocx " qui est utilisé, assurez vous donc qu'il soit enregistré.
Dans l'exemple suivant les commandes ftp sont rédigées dans un fichier texte puis exécutées à la volée :
<% Dim objFSO, objTextFile, oScript, oScriptNet Dim oFileSys, oFile, strCMD, strTempFile, strCommandResult Dim ftp_address, ftp_username, ftp_password Dim ftp_physical_path, ftp_files_to_put ' changer la valeur des variables ftp_address = "ftp.server.com" ftp_username = "username" ftp_password = "password" ' laisser vide si le fichier est à la racine du site ftp ftp_remote_directory = "subdirectory" ftp_files_to_put = "file.txt" On Error Resume Next Set oScript = Server.CreateObject("WSCRIPT.SHELL") Set oFileSys = Server.CreateObject("Scripting.FileSystemObject") Set objFSO = CreateObject("Scripting.FileSystemObject") ' Composition des commandes ftp Set objTextFile=objFSO.CreateTextFile (Server.MapPath("test.ftp")) objTextFile.WriteLine "lcd " & Server.MapPath(".") objTextFile.WriteLine "open " & ftp_address objTextFile.WriteLine ftp_username objTextFile.WriteLine ftp_password ' Vérifier si nous devons faire un cd If ftp_remote_directory <> "" Then objTextFile.WriteLine "cd " & ftp_remote_directory End If objTextFile.WriteLine "prompt" ' A décommenter si fichier binaire(image,...) ' objTextFile.WriteLine "binary" 'Si il y a plusieurs fichier on utilise mput ' plutôt que put If Instr(1, ftp_files_to_put, "*",1) Then objTextFile.WriteLine "mput " & ftp_files_to_put Else objTextFile.WriteLine "put " & ftp_files_to_put End If objTextFile.WriteLine "bye" objTextFile.Close Set objTextFile = Nothing ' Nous utiliserons une ligne de commande pour ' lancer ftp.exe strCMD = "ftp.exe -s:" & Server.MapPath("test.ftp") strTempFile = "C:\" & oFileSys.GetTempName( ) Call oScript.Run ("cmd.exe /c " & strCMD & " > " & strTempFile, 0, True) Set oFile = oFileSys.OpenTextFile (strTempFile, 1, False, 0) On Error Resume Next ' On récupère la sortie du fichier temporaire strCommandResult = Server.HTMLEncode( oFile.ReadAll ) oFile.Close ' On efface fichier temporaire et les commandes Call oFileSys.DeleteFile( strTempFile, True ) Call objFSO.DeleteFile( Server.MapPath("test.ftp"), True ) Set oFileSys = Nothing Set objFSO = Nothing ' On sort à l'écran le résultat de la session FTP Response.Write(Replace( strCommandResult, vbCrLf, "Pour toutes questions utilisez le forum.
", 1, -1, 1)) %>