Anglais Francais Prosygma Italie
-
    hebergement asp
prosygma_logo

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


/ 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)) %>