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

VB 6 et antérieur Discussion :

[VB6]parcourir un répertoire sur un site ftp


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut [VB6]parcourir un répertoire sur un site ftp
    Bonjour,

    A partir de mon application j'arrive à récupérer un fichier qui se trouve sur un site ftp en précisant le chemin. Mais ce que je souhaiterais c'est pouvoir lui donner l'adresse du répertoire, le parcourir afin de récupérer tous les fichiers se trouvant dedans.

    je sais que pour arriver sur le 1er fichier du dossier racine, il faut utiliser "ftpFindFirstFile", mais je voudrais lui donner moi même le chemin du dossier afin qu'il cherche le 1er fichier dedans, et ensuite pour parcourir je sais que c'est "InternetFindNextFile".

    Si quelqu'un peut m'aider, merci d'avance.

    Les exemples que je trouve montre comment parcourir dans le dossier courant, mais ce que je voudrais c'est lui assigner moi même le répertoire où il doit parcourir.

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Il faut utiliser FtpSetCurrentDirectory
    dont voici la déclaration

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    voilà ce que j'ai fait :
    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
     
        Dim tst2
        'stocke le repertoire racine
        sOrgPath = String(MAX_PATH, 0)
        'obtien le repertoire
        FtpGetCurrentDirectory hConnection, sOrgPath, Len(sOrgPath)
     
        FtpSetCurrentDirectory hConnection, sSource
        pData.cFileName = String(MAX_PATH, 0)
        hFind = FtpFindFirstFile(hConnection, "*.*", pData, 0, 0)
        nLastError = Err.LastDllError
     
        If hFind = 0 Then
            If (nLastError = ERROR_NO_MORE_FILES) Then
                MsgBox "Le répertoire défini sur le FTP est vide !", vbOKOnly, "Alerte"
     
            End If
            Exit Function
        Else
     
            Dim bRet As Boolean
            Dim strItemName As String
            strItemName = Left(pData.cFileName, InStr(1, pData.cFileName, String(1, 0), vbBinaryCompare) - 1)
            tst2 = FtpGetFile(hConnection, sSource & strItemName, sDest & strItemName, False, 0, FTP_TRANSFER_TYPE_UNKNOWN, 0)
     
            Do
                pData.cFileName = String(MAX_PATH, 0)
                bRet = InternetFindNextFile(hFind, pData)
                If Not bRet Then
                    dError = Err.LastDllError
                    Exit Do
                Else
                    strItemName = Left(pData.cFileName, InStr(1, pData.cFileName, String(1, 0), vbBinaryCompare) - 1)
                    tst2 = FtpGetFile(hConnection, sSource, sDest & strItemName, False, 0, FTP_TRANSFER_TYPE_UNKNOWN, 0)
               End If
            Loop
     
        End If
    Mais ça ne fonctionne pas, alors que quand le nom du fichier est défini directement sur dans l'adresse comme ceci, ça fonctionne :
    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
     
    Dim tst2
    'stocke le repertoire racine
    sOrgPath = String(MAX_PATH, 0)
    'obtien le repertoire
    FtpGetCurrentDirectory hConnection, sOrgPath, Len(sOrgPath)
    tst2 = FtpGetFile(hConnection, sSource, sDest & ExtractFileNameFTP(sSource), False, 0, FTP_TRANSFER_TYPE_UNKNOWN, 0)
    If Dir(sDest) <> "" Then
        Print #numLog, "Réussie"
        FtpDeleteFile hConnection, sSource
        'enreg_etape
        bGET = True
    Else
        Print #numLog, "Fichier non présent"
        'enreg_etape
        bGET = False
    End If
    Donc je résume, dans le 1er code je parcours bien le dossier que j'ai défini, mais ça ne me récupère pas le fichier, alors que dans le 2ème sSource contient le chemin complet du fichier, et là ça fonctionne.

    Mais bon le but est de parcourir le dossier et de récupérer les fichiers se trouvant dans le dossier.

    Est-ce que quelqu'un aurait une idée ?

  4. #4
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Pourqoui descendre au niveau des api, la programmation des socks avec le composant winsock est bien plus facile !

    Tu en trouveras un exemple , implementant le protocole FTP ici
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

Discussions similaires

  1. Gestion de licences de logiciel sur un site FTP
    Par colorid dans le forum Langage
    Réponses: 3
    Dernier message: 15/06/2009, 15h35
  2. Problème accès répertoire sur mon site
    Par rungis dans le forum Apache
    Réponses: 9
    Dernier message: 12/11/2007, 11h38
  3. Réponses: 7
    Dernier message: 23/08/2007, 12h20
  4. la date de création d'un fichier sur un site ftp??
    Par timsah dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/01/2006, 21h27
  5. parcourir un dossier sur un serveur ftp distant
    Par progima dans le forum MFC
    Réponses: 1
    Dernier message: 07/10/2005, 16h47

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