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

Windows Discussion :

problème avec ftpgetfile


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 9
    Par défaut problème avec ftpgetfile
    Bien le bonjour,
    J'ai un petit souci: Ftpgetfile marche quand je suis connecté depuis mon bureau (succès = True) mais pas quand je me connecte depuis un autre (succès=false). Avez-vous des éléments de réponse?

    Merci!

    Voici mon code:

    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
    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
    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
    Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias _
         "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, _
         ByVal lpszDirectory As String) As Boolean
    Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" ( _
         ByVal hConnect As Long, _
         ByVal lpszRemoteFile As String, _
         ByVal lpszNewFile As String, _
         ByVal fFailIfExists As Long, _
         ByVal dwFlagsAndAttributes As Long, _
         ByVal dwFlags As Long, _
         ByRef dwContext As Long) As Boolean
    
    Sub cherche()
    Dim Nom As String
    Dim chemin As String
    
    Nom = ActiveCell.Value + ".xls"
    chemin = "C:\dossier1\" + Nom
    
    internet_ok = InternetOpen("", 1, "", "", 0)
    If internet_ok Then
        ftp_ok = InternetConnect(internet_ok, "serveur.com", 21, "login", "motdepasse", 1, 0, 0)
        If FtpSetCurrentDirectory(ftp_ok, "/dossier2") Then
            succès = FtpGetFile(ftp_ok, Nom, chemin, False, 0, &H0, 0)
        End If
    
    End If
    
    If succès = False Then MsgBox ("le fichier '" + Nom + "' n'a pas été trouvé!")
    
    If succès Then
        Workbooks.Open Filename:=chemin
    End If
    
    
    End Sub

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut


    Problèmes de droits du compte Windows courant, de firewall Windows, de restrictions d'accès niveau IP côté serveur FTP, d'authentification NT, que sais-je encore...

    Si tu arrives à te connecter au FTP mais que tu es éjecté sur un transfert, c'est certainement un problème de firewall / filtrage serveur. Essaie avec un client FTP "normal" pour voir si tu n'aurais pas plus de détails sur l'erreur, et/ou d'appeler InternetGetLastResponseInfo dans ton code autant de fois que nécessaire, afin d'afficher l'intégralité des messages d'erreurs ayant provoqué l'échec du transfert.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 9
    Par défaut
    Merci,

    Je suis un peu novice en la matière alors je ne connais pas tous les tenants, mais le même code fonctionne depuis mon bureau et avec le même PC (j'ai un ordi portable). Seul un changement de connexion provoque l'erreur qui ne peut donc pas venir du serveur.

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par Grandbo Voir le message
    Seul un changement de connexion provoque l'erreur qui ne peut donc pas venir du serveur.
    On parie ?
    Essaie d'accéder à une messagerie Orange depuis une ligne Free, tu verras si un serveur ne peut pas bloquer certaines IP...

    Sur le PC qui ne "marche pas", essaie avec un client FTP classique comme FileZilla, et regarde ses messages d'erreur. De plus, modifie ton code pour appeler InternetGetLastResponseInfo en cas d'échec des commandes INet, de façon à avoir des messages d'erreur explicites.

    Une fois ceci fait, donnes-nous les messages d'erreur en question : on ne pourra pas t'aider sans ça, car il y a bien trop de causes possibles.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 9
    Par défaut
    Alors non je ne crois pas que je vais parier.

    Comme je suis effectivement un novice, je ne sais pas comment insérer InternetGetLastResponseInfo dans mon code. Il faut sans doute que je définisse la fonction?

    Merci encore.

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par Grandbo Voir le message
    Comme je suis effectivement un novice, je ne sais pas comment insérer InternetGetLastResponseInfo dans mon code. Il faut sans doute que je définisse la fonction?
    Comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    succès = FtpGetFile(ftp_ok, Nom, chemin, False, 0, &H0, 0)
    If succès = FALSE Then
      InternetGetLastResponseInfo(.......)
    End If
    Remplaces les ..... par les variables adéquates (cf. cette page pour la doc de la fonction).

    Avec une déclaration qui doit être celle-là, normalement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Declare Function InternetGetLastResponseInfo Lib "wininet.dll" Alias _
         "InternetGetLastResponseInfoA" (ByRef lpdwError As Long, _
         ByVal lpszBuffer As String, ByRef lpdwBufferLength As Long ) As Boolean
    Pour le reste, je ne suis pas spécialiste du VB, loin de là, donc il est possible que l'importation ci-dessus ne soit pas parfaite. A faire confirmer / vérifier par quelqu'un connaissant bien ce langage et l'interfaçage avec l'API Win32.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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