IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

besoin d'aide pour comprendre un code pour FTP trouvé sur le forum


Sujet :

VBA Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut besoin d'aide pour comprendre un code pour FTP trouvé sur le forum
    Bonjour,
    j'envoi des fichiers sur un FTP en utilisant des batchs. Pour simplifier, j'ai envie d'utiliser que ACCESS pour envoyer et recevoir des fichiers sur un FTP.

    En cherchant sur le forum, j'ai trouvé ce post
    http://www.developpez.net/forums/d25...-fichiers-ftp/

    et notamment ce code :
    Citation Envoyé par micniv Voir le message
    Ah, les gars, vous m'avez obligé à replonger dans le FTP :

    Donc voici une solution sans besoin d'OCX, inspirée de la faq (qui ne marche pas correctement, il est vrai)

    Vous mettez dans un module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    Option Compare Database
    Option Explicit
     
    '-------------------
    'Déclaration des API
    '-------------------
     
    Private 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
    Private Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
    Private 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
    Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hOpen As Long, ByVal sURL As String, ByVal sHeaders As String, ByVal lLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
    Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
    Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
    Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hFile As Long, ByVal localFile As String, ByVal newRemoteFile As String, ByVal dwFlags As Long, ByVal lContext As Long) As Boolean
     
     
    Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
    Private Const INTERNET_OPEN_TYPE_DIRECT = 1
    Private Const INTERNET_OPEN_TYPE_PROXY = 3
     
    Private Const scUserAgent = "VB OpenUrl"
    Private Const INTERNET_FLAG_RELOAD = &H8000000  '(&H8000000 mode passif, 0 mode actif)
    Private Const INTERNET_bin_asc = &H2            '(&H1 ascii, &H2 binaire)
     
     
    Public Sub Download(sURL As String, SaveAs As String)
    'Exemple :
    '      Call Download("http://www.url.com/fichier.zip", "C:\Fichier.zip")
     
        Dim hOpen As Long
        Dim hOpenUrl As Long
        Dim bDoLoop As Boolean
        Dim bRet As Boolean
        Dim sReadBuffer As String * 2048
        Dim lNumberOfBytesRead As Long
        Dim sBuffer As String
        Dim sMsg As String
     
        hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
        hOpenUrl = InternetOpenUrl(hOpen, sURL, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
     
        bDoLoop = True
        While bDoLoop
            sReadBuffer = vbNullString
            bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
            sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)
            If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
        Wend
     
        Open SaveAs For Binary Access Write As #1
        Put #1, , sBuffer
        Close #1
     
        If bRet Then
            sMsg = sURL & " a été transféré "
        Else
            sMsg = sURL & " n'a pas pu être transféré"
        End If
     
        If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)
        If hOpen <> 0 Then InternetCloseHandle (hOpen)
     
        'annoncer le résultat de l'opération
        If sMsg <> "" Then
            MsgBox sMsg
        Else
            MsgBox "aucun fichier transféré"
        End If
     
    End Sub
     
     
    Public Sub Upload(sURL As String, sLogin As String, sPwd As String, localFile As String, remoteDir As String, remoteSaveAs As String)
    'transfère des fichiers du disque local vers un serveur ftp (upload, mode passif)
        Dim hOpen As Long
        Dim hOpenFtp As Long
        Dim bRet As Boolean
        Dim sMsg As String
     
        '''PARAMETRES************************
        ''sURL = "ftpperso.free.fr"
        ''localFile = "c:\test.log"
        ''sLogin = "zaza"
        ''sPwd = "miaou"
        ''remoteDir = "/"
        ''INTERNET_bin_asc = &H2 '(&H1 ascii, &H2 binaire)
        ''Mode = &H8000000 '(&H8000000 mode passif, 0 mode actif)
        '''**********************************
     
        'lancer le transfert
        hOpen = InternetOpen("PutFtpFile", 1, "", "", 0)
        If hOpen = 0 Then
            MsgBox "connection internet impossible"
            Exit Sub
        End If
        hOpenFtp = InternetConnect(hOpen, sURL, 21, sLogin, sPwd, 1, INTERNET_FLAG_RELOAD, 0)
        If hOpenFtp = 0 Then
            MsgBox "connection  impossible"
            Exit Sub
        End If
     
        If FtpSetCurrentDirectory(hOpenFtp, remoteDir) = 0 Then
            MsgBox "impossible de trouver le répertoire distant " & remoteDir
            Exit Sub
        End If
     
        'nom du fichier sans le chemin
    '    Do While InStr(localFile, "\") > 0
    '        localFile = Right(localFile, Len(localFile) - InStr(localFile, "\"))
    '    Loop
     
        'transférer le fichier
        bRet = FtpPutFile(hOpenFtp, localFile, remoteSaveAs, INTERNET_bin_asc, 0)
        If bRet Then
            sMsg = localFile & " a été transféré "
        Else
            sMsg = localFile & " n'a pas pu être transféré"
        End If
     
        'fermer les pointeurs, ménage
        InternetCloseHandle hOpenFtp
        InternetCloseHandle hOpen
     
        'annoncer le résultat de l'opération
        If sMsg <> "" Then
            MsgBox sMsg
        Else
            MsgBox "aucun fichier transféré"
        End If
     
    End Sub
    et depuis votre formulaire vous pouvez appeler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub cmdGet1_Click()
    'pour le DOWNLOAD d'un fichier
    Call Download("http://micniv.free.fr/Dir1/testUp.log", "D:\dev\dev_Ftp\testUp.log")
     
    End Sub
     
     
    Private Sub cmdPut1_Click()
    'pour UPLOAD
     
    Call Upload("monsite.free.fr", "mlogin", "mot_de_passe", "D:\dev\dev_Ftp\test.log", "/Dir1", "testUp.log")
     
    End Sub
    Cette fois ça doit marcher chez vous
    Bonne journée

    Ma question porte sur le Dowload, ici il utilise une adresse http. Moi, pour pouvoir télécharger depuis mon ftp, je dois me connecter à l'adresse ip, puis login et password. Je ne comprends pas comment je peux adapter pour faire mon download (j'ai plusieurs fichiers à récupérer).


    Pouvez-vous m'éclairer ?
    Merci

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    En lisant le code de la fonction on peut s'apercevoir qu'il existe des paramètres login et pwd

    Une autre piste :

    http://access.developpez.com/sources...hiers#EnvoiFTP

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut
    Merci Tofalu

    mais les paramètres sont pour la partie Upload.

    Dans la partie Download, il n' y en a pas. Et je pense que c'est justement parce qu'il ne se connecte pas à un ftp mais à un site url direct.


    Je vais essayer ton lien en attendant.

    A+
    Thibault

Discussions similaires

  1. Besoin d'aide pour comprendre un code
    Par belibaste34 dans le forum MATLAB
    Réponses: 0
    Dernier message: 25/04/2014, 10h01
  2. Besoin de votre aide et de vos explications pour comprendre certaines expressions
    Par Spartiates dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 11/03/2009, 13h14
  3. Besoin d aide pour comprendre un code
    Par litlebasic dans le forum Delphi
    Réponses: 4
    Dernier message: 22/06/2006, 13h00
  4. Aide pour comprendre un code
    Par Spacy_green dans le forum Assembleur
    Réponses: 2
    Dernier message: 13/02/2006, 13h22
  5. Aide pour comprendre le code
    Par jfreuff dans le forum Assembleur
    Réponses: 2
    Dernier message: 31/01/2006, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo