Deposer un fichier sur un serveur FTP

youplaboom69 Messages postés 37 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 19 octobre 2006 - 7 juin 2005 à 13:50
youplaboom69 Messages postés 37 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 19 octobre 2006 - 9 juin 2005 à 15:25
Bonjour a tous et a toutes...

Bon, je sais que le sujet a été abordé plusieurs fois deja, mais vraiment, je n'y comprend rien du tout!!
Ce que je voudrais faire me parait simple. Je sélectionne un serveur FTP avec son adresse IP, je selectionne un répertoire sur ce serveur, et pis j'y pose mon fichier et voilou.
Ca a pas l'air dur comme ça mais je vois vraiment pas comment faire...
Et SVP, me dites pas va voir ci ou ça, ou alors seulement si y a des commentaires parce que je suis a la rammasse sur tout ce qui est réseau moi...
Si quelqu'un peut m'aider efficacement et rapidement ça serait tres tres cool de sa part!!
Merci bien et bonne fin de journée

7 réponses

vaughan Messages postés 198 Date d'inscription mardi 6 août 2002 Statut Membre Dernière intervention 29 octobre 2008
7 juin 2005 à 14:13
Je te conseille d'utiliser l'API FtpPutFile :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/ftpputfile.asp

Exemple d'utilisation :

Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, ByVal lAccessType As Long, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, ByVal lFlags As Long) As Long

Public Declare Function InternetConnect Lib "wininet.dll" _
Alias "InternetConnectA" ( _
ByVal hInternetSession As Long, ByVal sServerName As String, _
ByVal nServerPort As Integer, ByVal sUsername As String, _
ByVal sPassword As String, ByVal lService As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long

Public Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias _
"FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, _
ByVal lpszDirectory As String) As Boolean

Public Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" ( _
ByVal hFtpSession As Long, ByVal lpszLocalFile As String, _
ByVal lpszRemoteFile As String, _
ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean

Public Declare Function InternetCloseHandle Lib "wininet.dll" ( _
ByVal hInet As Long) As Integer

Public Const INTERNET_DEFAULT_FTP_PORT = 21
Public Const INTERNET_SERVICE_FTP = 1

Public Enum eTRANSFERT_TYPE
FTP_TRANSFER_TYPE_ASCII = &H1
FTP_TRANSFER_TYPE_BINARY = &H2
End Enum

Private Function PutFtpFile(stServ As String, stLogin As String, stPass As String, _
stRepFtp As String, stFicFtp As String, _
stFicLocal As String, lgType As eTRANSFERT_TYPE) As Boolean
' Cette fonction charge un fichier local sur un serveur FTP.
' stServ contient le nom ou l'adresse IP du serveur FTP
' stLogin est le login à utiliser
' stPass est le mot de passe associé au login
' stRepFtp est le répertoire FTP ou sera placé le fichier ("/" pour la racine)
' stFicFtp est le nom qui sera donné au fichier sur le serveur
' stFicLocal est le chemin complet (+nom) du fichier local
' lgType est le type de transfert à utiliser (texte ou binaire)
' La fonction retourne Vrai si le transfert à réussi, sinon Faux.
Dim lgFtp As Long, lgSession As Long, lgDir As Long
Dim inRes As Integer
Dim blOk As Boolean
blOk = False
' Récupère un pointeur vers la connexion internet courante
lgSession = InternetOpen("PutFtpFile", 1, vbNullString, vbNullString, 0)
If lgSession Then
' Récupère un pointeur vers pour session FTP
lgFtp = InternetConnect(lgSession, stServ, INTERNET_DEFAULT_FTP_PORT, _
stLogin, stPass, INTERNET_SERVICE_FTP, 0, 0)
If lgFtp Then
' Positionne le répertoire distant
If FtpSetCurrentDirectory(lgFtp, stRepFtp) Then
' Envoie le fichier
blOk = FtpPutFile(lgFtp, stFicLocal, stFicFtp, _
FTP_TRANSFER_TYPE_ASCII, 0)
End If
End If
' Libération du pointeur
inRes = InternetCloseHandle(lgFtp)
End If
' Retourne le résultat
PutFtpFile = blOk
End Function

vaughan
0
youplaboom69 Messages postés 37 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 19 octobre 2006
7 juin 2005 à 16:42
Bon oki c'est sympa...ça fait avancé le smilblick....mais j'ai encore des soucis (je sais chui un boulet).
Bon je veux faire des testes. J'ai télécharger un serveur FTP que je fais tourner en local (dc 127.0.0.1). Je voudrais poser un fichier sur sur ce serveur.
J'ai créé un domaine, avec un utilisataur anonyme.
et j'utilise la fonction qui m'a été donnée plus haut:

Dim ok As Boolean
ok = PutFtpFile("127.0.0.1", "Anonymous", "", "& _
"", "toto.txt", App.Path & "\servers.txt", "& _
FTP_TRANSFER_TYPE_BINARY)

et puis ça marche pas...
Je suis incapable de dire pourquoi!!
Si quelqu'un voit q'un de mes parametres ne va pas merci de le dire...
@++
0
vaughan Messages postés 198 Date d'inscription mardi 6 août 2002 Statut Membre Dernière intervention 29 octobre 2008
7 juin 2005 à 17:51
Vérifie en premier si ton server ftp est bien paramétré en commande dos.

utilise cmd.exe
ensuite en dos :
ftp
open 127.0.0.1
username+password
ensuite
tu peux faire un get ou put

Voir dans l'aide window les commandes ftp.

vaughan
0
youplaboom69 Messages postés 37 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 19 octobre 2006
8 juin 2005 à 09:57
Ben j'arrive pas avec DOS...j'ai pas pourquoi, il me sors une ligne bizarre kan j'essaye de rentrer une commande....j'arrive a connecter le serveur et apres pouf...
J'ai trouvé la ligne qui coince...c'est celle la:
lgFtp = InternetConnect(lgSession, stServ, INTERNET_DEFAULT_FTP_PORT, _
stLogin, stPass, INTERNET_SERVICE_FTP, 0, 0)
A mon avis c'est même le truc INTERNET_SERVICE_FTP.
Je sais aps trop a koi ça correspond. Je fais des recherches de mon cotés mais si vous avez la réponse...ben faites tourner!!
Bonne journée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vaughan Messages postés 198 Date d'inscription mardi 6 août 2002 Statut Membre Dernière intervention 29 octobre 2008
8 juin 2005 à 10:58
Pour t'orienter ...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/internetconnect.asp

Vérifie si le port 21 est dispo.
Et surtout comme ton server est "Anonymous" mettre "vbNullString" pour le mot de passe et le nom de l'utilisateur.

vaughan
0
youplaboom69 Messages postés 37 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 19 octobre 2006
8 juin 2005 à 12:51
Bon je vais essayé d'etre plus clair....
j'ai telecharger gene6 pour faire tourner un serveur en local. Dedans j'ai defini un utilisareur avec comme nom "Administrateur" et comme password "passwd". J'utilise le port 8021.
Donc je passes tout ça en parametre de la fonction que j'ai eu plus haut et je n'arrive pas a entrer dasn la condition
lgFtp = InternetConnect(lgSession, stServ, INTERNET_DEFAULT_FTP_PORT, _
stLogin, stPass, INTERNET_SERVICE_FTP, 0, 0)
if (lgFtp)....

le lgFtp est a tout les coup egal a 0. J'ai changé les parametre pour mettre anonymous et vbNullString mais ça marche toujours pas..
0
youplaboom69 Messages postés 37 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 19 octobre 2006
9 juin 2005 à 15:25
bon j'y arrive presque ms j'ai une erreur 12003 qui n'est referncé nul part...c'est koi?.
0
Rejoignez-nous