Il est difficile de deviner où ton code se bloque, mais je peux te donner des précisions sur FTP
En FTP on utilise deux connections, la premiere sur le PORT 21 sert à l'échange des messages de protocole, la deuxieme sert au transfert des Données , et pour cela , le port est géré soit par toi, soit par le serveur.
Apparement dans ton code, c'est le serveur qui a pris l'initiave de la détermination du port (Tu as du lui envoyer au préalable une commande PASV et le serveur te reponds par le n° du Port qu'il a choisi)
Tes lignes
1 2 3 4
| Temp = Split(txtrecu, ")")
Temp = Split(Temp(0), "(")
Temp = Split(Temp(1), ",")
FtpDataRemotePort = CLng(Temp(4)) * 256 + CLng(Temp(5)) |
te permettent d'avoir cette information
les lignes en dessous te permettent de lire le contenu du fichier que tu vas envoyer
1 2 3 4
| Dim Buffer As Variant
Open "C:\heps.txt" For Binary Access Read Lock Read Write As #1
Buffer = Input(LOF(1), #1)
Close #1 |
elles auraient aussi bien pu se trouver bien avant meme que tu commence la liaison , mais pourquoi pas ici. pas de problème
Ensuite tu ouvres la seconde liaison, (le serveur s'attend à t'y voir arriver)
FTPUP.Connect "Knight-Server.Ath.Cx", FtpDataRemotePort
Maintenant , sur la premiere liaison , tu lui envoies une ligne de protocole, lui disant que tu vas lui envoyer les datas du fichier qu'il devra stocker sous le nom de "fichier.exe"
FTP.SendData "STOR" & "fichier.exe"
(je crois que tu as oublié un blanc apres le STOR)
Si le serveur a bien tout pigé il te renvoie une ligne de protocole commencant par 150, en cas de difficulé le numero sera différent (exemple, le serveur FTP n'a pas été configuré pour le UpLoad)
Mainenant tout est en place pour le transfert des données proprement dit
FTPUP.SendData Buffer & vbCrLf
Il te manque la fermeture du canal des données pour prévenir le serveur quand tu as tout envoyé
Voila , j'espere que ces explications te permettront de trouver ou est le problème
Partager