|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Problème de récupération de fichier sur un FTP |
Débuté par Michael, 09 aoû. 2024 13:34 - 7 réponses |
| |
| | | |
|
| |
Posté le 09 août 2024 - 13:34 |
Bonjour,
J'utilise les fonctions FtpListeFichier() et FtpRecupere() pour me connecter à différents serveurs FTP de fournisseurs qui ne m'appartiennent pas, afin de récupérer des fichiers de livraison. Je rencontre un soucis sur un serveur FTP en particulier.
La fonction FtpListeFichier() me retourne bien les fichiers présents dans le répertoire, mais y ajoute au début une date. Par exemple si j'ai un fichier appelé "MonFichierA.txt", la valeur retournée par la fonction FtpListeFichier() sera "Aug 2024 23:00:05 GMT MonfichierA.txt". Cette date semble correspondre à la date de dépôt du fichier sur le FTP.
Ceci empêche la fonction FtpRecupere() de télécharger le fichier. A chaque fois, le message d'erreur indique que le fichier n'existe pas
J'utilise le même code depuis plusieurs années, sur 5 serveurs FTP différents (windows/linux) et je n'ai jamais rencontré ce soucis.
Avec le même code, le problème se pose uniquement sur mes 2 serveurs Windows Server 2016. Aucun soucis sur 2 PC Windows 11 et sur 3 serveurs Windows Server 2022.
Je suis en version 28, dernière update faite.
L'erreur rencontrée par la fonction FtpRecupere() est :
Le fichier ou le répertoire /Download/SHIPMENT/Aug 2024 23:00:05 GMT MonfichierA.txt n'existe pas ou est inaccessible. Détail de l'erreur système : 3
J'ai essayé plusieurs choses, sans succès : - Forcer le répertoire en cours avant le FtpRecupere() - Modifier le nom du fichier en supprimant la date avant le FtpRecupere()
En attendant de trouver une solution, j'ai basculer mon programme sur un serveur Windows 2022 au lieu du Windows 2016.
Merci d'avance pour vos idées.
Code pour lister les fichiers :
gnFtpConnex = FTPConnecte(FTP_SERVEUR_SAFE,FTP_USER_SAFE,FTP_MDP_SAFE) SI gnFtpConnex <> -1 ALORS gnModeRcp = MODE_RCP_FTP gnModeTransfert = ftpModeBinaire nbFichiers = FTPListeFichier(gnFtpConnex,REP_FTP_RCP_SAFE + "*.csv",CreerReception,ftpFichier) EcritLog("SAFECO : " + nbFichiers + " fichier(s), mode FTP") FTPDéconnecte(gnFtpConnex)
SINON EcritLogErreur("Impossible de se connecter au FTP : " + ErreurInfo(errMessage)) FIN
Code de la fonction CreerReception() appelée pour chaque fichier trouvé :
Procedure CreerReception(sMonFichier est une chaîne)
SI FTPRécupère(gnFtpConnex,sMonFichier,gsREP_LOC_ATTENTE,"",gnModeTransfert) = Faux ALORS sLogErreur = "Impossible de récupérer le fichier " + sMonFichier + RC + ErreurInfo(errMessage) EcritLogErreur(sLogErreur) RENVOYER Faux FIN
Michaël. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 670 messages Popularité : +222 (260 votes) |
|
Posté le 11 août 2024 - 21:36 |
Si tu installes un filezilla sur ton 2016 tu vois quoi ?
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Posté le 02 septembre 2024 - 10:24 |
Bonjour,
Désolé pour le retard j'étais en congés. Depuis Filezilla, tout fonctionne, quelque soit l'OS Server. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 196 messages |
|
Posté le 03 septembre 2024 - 10:22 |
Bonjour,
je suis étonné qu'il puisse exister un fichier dans le dossier que tu cites :
/Download/SHIPMENT/Aug 2024 23:00:05 GMT MonfichierA.txt
et pour cause, le caractère deux ( : ) est interdit dans un nom de fichier Windows !
Je pense qu'il faudrait plancher là-dessus... |
| |
| |
| | | |
|
| | |
| |
Posté le 03 septembre 2024 - 12:27 |
bonjour,
votre méthode 'CreerReception' n'a pas le bon prototype
essayer de la modifier en utilisant le bon prototype voir si cela fonctionne
une piste à tester
bon courage et bon dèv
-> https://doc.pcsoft.fr/fr-FR/?3040018 |
| |
| |
| | | |
|
| | |
| |
Posté le 04 septembre 2024 - 12:54 |
Oui je te confirme que le fichier ne se nomme pas comme ça quand on le consulte par Filezilla. Il se nomme bien "MonfichierA.txt".
C'est Windev qui m'ajoute cet horodatage au début. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 011 messages Popularité : +53 (65 votes) |
|
Posté le 04 septembre 2024 - 15:29 |
Bonjour,
Je ne suis pas sûr que la procédure callback de FTPListeFichier() permette de faire un FTPRécupère(). FTPListeFichier() renvoie une liste de fichiers qu'il faut ensuite parcourir dans une boucle qui contiendra le FTPRécupère().
-- Bon dev, Jean-Pierre |
| |
| |
| | | |
|
| | |
| |
Posté le 12 septembre 2024 - 13:03 |
Bonjour,
Merci pour cette suggestion.
Je viens de réécrire ma procédure callback pour qu'elle se contente de remplir un tableau global contenant la liste des fichiers.
Je parcours ensuite ce tableau après le FtpListefichier() pour lancer ma fonction CreerReception() pour chaque fichier.
Malheureusement le résultat est le même.
D'ailleurs ce nouveau code fonctionne bien sur les postes sur lequel le précédent code fonctionnait. |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|