[R] _FTP_FileGet

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

[R] _FTP_FileGet

#1

Message par amouna98 »

voila le code que j'utilise pr mettre mon fichier sur le serveur

Code : Tout sélectionner

#include <FTPex.au3>
;===============================================================================
;
; Function Name:    _FTPOpen()
; Description:      Opens an FTP session.
; Parameter(s):     $s_Agent        - Random name. ( like "myftp" )
;                   $l_AccessType   - I dont got a clue what this does.
;                   $s_ProxyName    - ProxyName.
;                   $s_ProxyBypass  - ProxyByPasses's.
;                   $l_Flags        - Special flags.
; Requirement(s):   DllCall, wininet.dll
; Return Value(s):  On Success - Returns an indentifier.
;                   On Failure - 0  and sets @ERROR
; Author(s):        Wouter van Kesteren.
;
;===============================================================================

Func _FTPOpen($s_Agent, $l_AccessType = 1, $s_ProxyName = '', $s_ProxyBypass = '', $l_Flags = 0)
    
    Local $ai_InternetOpen = DllCall('wininet.dll', 'long', 'InternetOpen', 'str', $s_Agent, 'long', $l_AccessType, 'str', $s_ProxyName, 'str', $s_ProxyBypass, 'long', $l_Flags)
    If @error OR $ai_InternetOpen[0] = 0 Then
        SetError(-1)
        Return 0
    EndIf
        
    Return $ai_InternetOpen[0]
    
EndFunc ;==> _FTPOpen()

;===============================================================================
;
; Function Name:    _FTPConnect()
; Description:      Connects to an FTP server.
; Parameter(s):     $l_InternetSession  - The Long from _FTPOpen()
;                   $s_ServerName       - Server name/ip.
;                   $s_Username         - Username.
;                   $s_Password         - Password.
;                   $i_ServerPort       - Server port ( 0 is default (21) )
;                   $l_Service          - I dont got a clue what this does.
;                   $l_Flags            - Special flags.
;                   $l_Context          - I dont got a clue what this does.
; Requirement(s):   DllCall, wininet.dll
; Return Value(s):  On Success - Returns an indentifier.
;                   On Failure - 0  and sets @ERROR
; Author(s):        Wouter van Kesteren
;
;===============================================================================

Func _FTPConnect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_ServerPort = 0, $l_Service = 1, $l_Flags = 0, $l_Context = 0)
    
    Local $ai_InternetConnect = DllCall('wininet.dll', 'long', 'InternetConnect', 'long', $l_InternetSession, 'str', $s_ServerName, 'int', $i_ServerPort, 'str', $s_Username, 'str', $s_Password, 'long', $l_Service, 'long', $l_Flags, 'long', $l_Context)
    If @error OR $ai_InternetConnect[0] = 0 Then
        SetError(-1)
        Return 0
    EndIf
            
    Return $ai_InternetConnect[0]
    
EndFunc ;==> _FTPConnect()

;===============================================================================
;
; Function Name:    _FTPPutFile()
; Description:      Puts an file on an FTP server.
; Parameter(s):     $l_FTPSession   - The Long from _FTPConnect()
;                   $s_LocalFile    - The local file.
;                   $s_RemoteFile   - The remote Location for the file.
;                   $l_Flags        - Special flags.
;                   $l_Context      - I dont got a clue what this does.
; Requirement(s):   DllCall, wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Wouter van Kesteren
;
;===============================================================================

Func _FTPPutFile($l_FTPSession, $s_LocalFile, $s_RemoteFile, $l_Flags = 0, $l_Context = 0)

    Local $ai_FTPPutFile = DllCall('wininet.dll', 'int', 'FtpPutFile', 'long', $l_FTPSession, 'str', $s_LocalFile, 'str', $s_RemoteFile, 'long', $l_Flags, 'long', $l_Context)
    If @error OR $ai_FTPPutFile[0] = 0 Then
        SetError(-1)
        Return 0
    EndIf
    
    Return $ai_FTPPutFile[0]
    
EndFunc ;==> _FTPPutFile()
;===============================================================================
;
; Function Name:    _FTPClose()
; Description:      Closes the _FTPOpen session.
; Parameter(s):     $l_InternetSession  - The Long from _FTPOpen()
; Requirement(s):   DllCall, wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Wouter van Kesteren
;
;===============================================================================
Func _FTPClose($l_InternetSession)
    
    Local $ai_InternetCloseHandle = DllCall('wininet.dll', 'int', 'InternetCloseHandle', 'long', $l_InternetSession)
    If @error OR $ai_InternetCloseHandle[0] = 0 Then
        SetError(-1)
        Return 0
    EndIf
    
    Return $ai_InternetCloseHandle[0]
    
EndFunc ;==> _FTPClose()
$l_InternetSession=_FTPOpen("myftp",1, '',  '',0)
MsgBox(0,"_FTPOpen",$l_InternetSession)
$l_FTPSession1=_FTPConnect($l_InternetSession, "xxx.xxx.xxx.xx", "xxxxx", "xxxxxx", 0, 1,0, 0)
MsgBox(0,"_FTPConnect",$l_FTPSession1)
$l_FTPSession=_FTPPutFile($l_FTPSession1, "D:\DEMOBOXFR5_Configure.ini", "/DEMOBOXFR5_Configure.ini", 0, 0)
;~ MsgBox(0,"_FTPPutFile",$l_FTPSession)
$close=_FTPClose($l_InternetSession)
MsgBox(0,"$close",$close)

 
et quand j'ai envie de recuperer ce fichier
je fais

Code : Tout sélectionner

$l_InternetSession=_FTPOpen("myftp",1, '',  '',0)
MsgBox(0,"_FTPOpen",$l_InternetSession)
$l_FTPSession1=_FTPConnect($l_InternetSession, "xxx.xxx.xxx.xx", "xxxxx", "xxxxxx", 0, 1,0, 0)
MsgBox(0,"_FTPConnect",$l_FTPSession1)
$a=_FTP_FileGet($l_FTPSession1, "D:\Dev\ftp\DEMOBOXFR5_Configure.ini" ,"D:\DEMOBOXFR5_Configure2.ini")
MsgBox(0,"_FTP_FileGet",$a)
$close=_FTPClose($l_InternetSession)
MsgBox(0,"$close",$close)

 
le fonction :_FTP_FileGet me retourne toujour 0 !!

merci
Modifié en dernier par amouna98 le mar. 24 août 2010 11:52, modifié 1 fois.
Avatar du membre
peuchere83
Niveau 5
Niveau 5
Messages : 169
Enregistré le : mer. 17 déc. 2008 10:50
Status : Hors ligne

Re: [..] _FTP_FileGet

#2

Message par peuchere83 »

Bonjour,

Je pense que ton problème de récupération ftp viens de cette ligne :

Code : Tout sélectionner

$a=_FTP_FileGet($l_FTPSession1, "D:\Dev\ftp\DEMOBOXFR5_Configure.ini" ,"D:\DEMOBOXFR5_Configure2.ini")
En effet ton chemin distant : "D:\Dev\ftp\DEMOBOXFR5_Configure.ini" n'est pas un chemin ftp. C'est un chemin local. Cela devrait ressembler à quelque chose du genre : "Rep1/Rep2/DEMOBOXFR5_Configure.ini"

En espérant avoir pu t'aider.
Tous biens que tu possèdes est un souci qui te retient.
Skippy est là pour t'enlever tous tes soucis.
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

Re: [..] _FTP_FileGet

#3

Message par amouna98 »

peuchere83 a écrit :Bonjour,

Je pense que ton problème de récupération ftp viens de cette ligne :

Code : Tout sélectionner

$a=_FTP_FileGet($l_FTPSession1, "D:\Dev\ftp\DEMOBOXFR5_Configure.ini" ,"D:\DEMOBOXFR5_Configure2.ini")
En effet ton chemin distant : "D:\Dev\ftp\DEMOBOXFR5_Configure.ini" n'est pas un chemin ftp. C'est un chemin local. Cela devrait ressembler à quelque chose du genre : "Rep1/Rep2/DEMOBOXFR5_Configure.ini"

En espérant avoir pu t'aider.
D:\Dev\ftp\DEMOBOXFR5_Configure.ini est le chemain sur le serveur si c est pas ca c'est quoi
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

Re: [..] _FTP_FileGet

#4

Message par amouna98 »

ah oui la j utilise un serveur sur le reseau local alors j'ai pensé a utiliser cette fonction mai ca marche pas

Code : Tout sélectionner

$res=FileCopy("ftp://xxx.xxx.xxx.xx/DEMOBOXFR5_Configure.ini", "D:\DEMOBOXFR5_Configure.ini")
MsgBox(0,"",$res)
 
mais il y a un code à entrer pour acceder a ftp://xxx.xxx.xxx.xx/
Avatar du membre
GELDROC
Niveau 6
Niveau 6
Messages : 295
Enregistré le : sam. 10 oct. 2009 10:15
Status : Hors ligne

Re: [..] _FTP_FileGet

#5

Message par GELDROC »

ce qui voulait te dire c'est de remplacer les "\" par des "/"
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

Re: [..] _FTP_FileGet

#6

Message par amouna98 »

bonjour,
JE pense que je me suis mal exprimé.
moi j ai un serveur sur le reseau et j ai envie de recupérer les fichiers que j'aivais mis via ftp ( de l'exterieur)
le chemain pour ces fichiers est : D:\Dev\ftp ( sur le serveur)
le chemain pour ces fichiers est : ftp://xxx.xxx.xxx.xxx/ ( de mon pc) mais il faut rentrer un nom d'utilisateur et un mot de passe
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] _FTP_FileGet

#7

Message par SrBelial »

si tu veux récupérer les fichiers de l'extérieur il est impossible d'utiliser le chemin "D:\patati\patata\fichier.txt"
cherche un exemple de connexion à un serveur ftp en autoit, je suis sur que tu trouveras ce que tu cherches ...

dans l'ordre il te faut trouver :
comment se connecter au serveur ftp => il te faudra l'adresse du serveur + le login + le password
comment récupérer un fichier (pour voir à quoi ressemblent les adresses inspire toi d'un client ftp comme filezilla par exemple)
comment se reconnecter si la connexion coupe.
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

Re: [..] _FTP_FileGet

#8

Message par amouna98 »

est ce que je suis obligé d utiliser du FTP meme si le serveur et mon PC sont sur le meme reseau ??!!!!!!!!!!!
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] _FTP_FileGet

#9

Message par SrBelial »

bien sur que non ... ^__^
mais puisque tu avais l'air partie la dedans au vu du post .... XD

si ton pc et l'autre sont sur le même réseau le plus simple est de passer par un lecteur réseau ...
comme ça tu pourra fonctionner avec les fonctions de manipulation de fichier classiques.
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
amouna98
Niveau 5
Niveau 5
Messages : 127
Enregistré le : jeu. 15 juil. 2010 10:17
Status : Hors ligne

Re: [..] _FTP_FileGet

#10

Message par amouna98 »

SrBelial a écrit :bien sur que non ... ^__^
mais puisque tu avais l'air partie la dedans au vu du post .... XD

si ton pc et l'autre sont sur le même réseau le plus simple est de passer par un lecteur réseau ...
comme ça tu pourra fonctionner avec les fonctions de manipulation de fichier classiques.
ah oui pourquoi ce cassé la tête si c'est si facil merciiiiiii je sais pas ou j'avais la tête :)
Répondre