Pour faire des transferts ftp, j'utilise le client ftp inclu dans windows. Pour cela, je génère dans mon programme VB un fichier batch et un fichier script (grâce a la commande Open for output). Le fichier batch sera appelé par une commande shell, et lui même appellera le fichier script où il n'y a plus qu'à entrer les commandes ftp a éxécuter.
Dans mon cas, il était question de transfert de fichiers entre as400 et PC. Voici 2 sources: un pour le transfert de pc vers as400, un autre dans l'autre sens, afin d'éclairer un peu tout ça!!!
Transfert vers l'as400:
Private Sub Form_Load()
'Génère un fichier batch
Open "c:\winnt\temp\sauv.bat" For Output As #1
Print #1, "pkzip -add=update -rec -dir=root c:\winnt\system32\adelia.zip c:\sauvadelia\*.*"
Print #1, "pkzip -add=update -rec -dir=root c:\winnt\system32\adelia.zip e:\bjd\dev\*.*"
Print #1, "pkzip -add=update -rec -dir=root c:\winnt\system32\adelia.zip e:\bjd\servlet\*.*"
'Appel du client ftp avec pour commandes à éxécuter
'celles contenues dans le fichier script commandes.scp
Print #1, "ftp -s:c:\winnt\temp\commandes.scp"
Print #1, "exit"
Close
'Génère un fichier script où sont contenues les commandes ftp à éxécuter
Open "c:\winnt\temp\commandes.scp" For Output As #1
Print #1, "open 192.1.1.2" 'ouvre une session ftp sur le serveur spécifié
Print #1, "ddial" 'login
Print #1, "ddialbjd" 'mot de passe
Print #1, "lcd c:\winnt\temp" 'repertoire de travail sur le pc local
Print #1, "cd sauvadelia" 'repertoire de travail sur l'as400 distant
Print #1, "Binary" 'mode de transfert de données binaire
Print #1, "put c:\winnt\system32\adelia.zip sauvadelia" 'put= envoi du fichier
'c:\winnt\system32\adelia.zip sur le pc local vers le fichier sauvadelia sur l'as400 distant
Print #1, "quit" 'ferme la session ftp
Close
'appel du fichier batch
Shell "cmd /k c:\winnt\temp\sauv", 1
End
End Sub
récupération depuis l'as 400:
Private Sub Command1_Click()
Dim rep As String
rep = Label1.Caption
'Génère le fichier script avec les commandes ftp (même principe que précédent)
Open "c:\winnt\temp\commandes.scp" For Output As #1
Print #1, "open 192.1.1.2"
Print #1, "ddial"
Print #1, "ddialbjd"
Print #1, "lcd c:\winnt\temp"
Print #1, "cd sauvadelia"
Print #1, "Binary"
Print #1, "get sauvadelia c:\winnt\temp\sauvadelia.zip" 'get=récupère le fichier
'sauvadelia sur le serveur distant vers le fichier local c:\winnt\temp\sauvadelia.zip
Print #1, "quit"
Close
'Génère le fichier batch (même principe que précédent)
Open "c:\winnt\temp\sauv.bat" For Output As #1
Print #1, "ftp -s:c:\winnt\temp\commandes.scp"
Print #1, "cd " + rep
Print #1, "pkzip -extract=update -rec -dir=current c:\winnt\temp\sauvadelia.zip "
Print #1, "exit"
Close
'Appel du fichier batch
Shell "cmd /k c:\winnt\temp\sauv", 1
End Sub
Voila! j'espère que ça pourra vous aider un peu