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, "
", 1, -1, 1))
%>
Pour toutes questions utilisez le forum.



