Comparaison des versions
Version | Ancienne version 3 | Nouvelle version Actuel |
---|---|---|
Modifications effectuées par | ||
Sauvegardée le |
Légende
- Ces lignes ont été ajoutées. Ce mot a été ajouté.
- Ces lignes ont été supprimées. Ce mot a été supprimé.
- La mise en forme a été modifiée.
Le module livré avec le RunTime Harmony YFTP.DHOP permet d’effectuer des transferts FTP. Ce module est arrivé avec Harmony 2018 et a été amélioré avec Harmony 2022.
Depuis la version X.7 de l’ERP, le module A5PMFTP.DHOP appelle des routines de YFtp en permettant en plus de l’encapsulation en utilisant un code FTP lié à la table WMTPARAMFTP, qui se chargera de transmettre les informations de connexion au serveur FTP, et les chemins locaux et distants.
...

Voici les méthodes du module YFTP :
...
![]() | ![]() | ![]() |
Info |
---|
Retrouvez les informations concernant YFTP dans l’aide en ligne XWIN au chapitre “Fonctions Ftp / SFtp”
|
Voici les méthodes présentes dans A5PMFTP :
...

YTFP, et donc par extension A5PMFTP permettent entre autres
l'upload et download d’un fichier
un test de connexion
du download multiple (GET * .XML par exemle), avec un retour pour chaque fichier téléchargé
du upload multiple (PUT * .XML par exemple), avec un retour pour chaque fichier envoyé
la sélection d’un pattern, comme *.xml.
*.* prendra tous les fichiers avec extension
* prendra tous les fichiers y compris ceux sans extension. Attention, il tentera également de copier les dossiers qui seraient présents sur le FTP mais va échouer. Si vous avez la problématique de GET e fichiers sans extension, alors atention à ne pas avoir de dossier dans le chemin de travail distantde choisir d’effectuer une copie avec une extension intermédiaire (Fichier.xml (distant) ->fichier.xml.tmp (local) → fichier.xml (local)) ou l’inverse (Fichier.xml (local) ->fichier.xml.tmp (distant) → fichier.xml (distant))
Ceci permet de s’assurer la copie intégrale du fichier sur le serveur (local ou distant) avant qu’il soit traitable de part son extension par un scrutateur
L’extension utilisée par défaut est .tmp, mais elle est consultable et modifiable avec les méthodes FTP_Set_IntermediateExtension et FTP_Get_IntermediateExtension
L’argument IntermediateExtension est
...
paramétrable sur la table WMPARAMFTP.
Contenu du recordDiva yftp.FtpResult
Champ | Contenu | Format |
---|---|---|
Status | Contient soit le retour de FtpRequestGetError 0 pas d’erreur 1 |
...
Ticket invalide 2 Erreur 3 Paramètres incorrects Ou un retour de A5PMFTP : 4 Erreur sur le chemin local 5 Impossible de renommer localement le fichier 6 Erreur sur le fichier local 7 Erreur sur le fichier distant 8 FtpCod transmis incorrect 9 Serveur non renseigné | L Code status du résultat
| |
Retour | Message d'erreur produit par Harmony OU A5PMFTP | 256 Retour principal |
Desc | Texte de l'exception produit par la couche .Net. | 256 Retour complémentaire |
FileName | Nom de fichier | 256 |
Outre le retour de la fonction appelée, vous pouvez obtenir plus de précisions en récupérant le dernier résultat par la méthode YFTP.FTP_get_lastFtpResult, renvoyant un recordDiva de type Yftp.FtpResult.
Contenu du recordDiva yftp.FtpFileResult
Le FtpFileResult est obtenu lors de traitement de fichiers multiples par Ftp_DownloadMultipleFile ou Ftp_UploadMultipleFile
Champ | Contenu | Format |
---|---|---|
FileName | Nom de fichier (individuel) | 256 |
Status | Identique à FtpResult (voir ci-dessus) | |
Retour | ||
Desc |
Cas des fonctions de copies multiples
Attention, en cas de de PUT/GET multiple, FTP_get_lastFtpResult ne donne le retour que du dernier fichier traité. Ceci ne traduit pas le retour pour chaque fichier traité.
Lors de l’appel aux méthodes suivantes,
YFTP.FtpDownloadMultipleFile
YFTP.FtpUploadMultipleFile
A5pmftp.A5_FtpDownloadMultipleFile_ParamFTP
A5pmftp.A5_FtpUploadMultipleFile_ParamFTP
Il convient pour chaque fichier de récupérer la liste des fichiers concernés et le retour par les méthodes FTP_get_ListDownloadedFile ou FTP_get_ListUploadedFile.
Cette méthode renvoie la liste des fichiers traités et le compte rendu du dernier appel à une des 4 méthodes *MultipleFile*.
Cette liste contient des éléments du recordDiva de type YFtp.FtpFileResult (voir ci-dessus).
Exemples
YFTP Test de connexion par download
Bloc de code |
---|
;* Public Function int FTPTestConnexion(url_ftp, url_login, url_password) ; Chargement du fichier de descriptif et du fichier de données ; 0 : OK / 1 : Erreur / 2 : Erreur de config 1 url_ftp A 1 url_login A 1 url_password A ; recordDiva yftp.FtpResult rd 1 fileName S 1 rt L = 1 ; Beginf fileName = CreateDirTemp("test.txt") ; Ftp recuperation du fichier rd = FtpDownloadFile (url_ftp, url_login, url_password, fileName, "test.txt" ) if (rd.Status = 0) ; Succes du telechargement rt = 0 elsif ( |
...
(rd.Status = 2) and (String("(550)", rd.Desc ) > 0))
; echec du telechargement car fichier pas trouvé (donc serveur trouvé et authen ok)
rt = 2
endif
RemoveDirTemp(fileName)
freturn(rt)
Endf |
YFTP Envoi fichier
Bloc de code |
---|
;*
function int Envoyer_fichier_vers_serveur_Ftp(servftp, login, pwd, fileTemp, repTag, FileName, DeleteFileFl)
;envoi le fichier zip du package sur le serveur ftp
1 servftp ;ServerFtpAdresse
1 login ;ServerFtpLogin
1 pwd ;ServerFtpPwd
1 repTag S ; Sous-Répertoire de copie du fichier
1 fileTemp S ; nom du fichier
1 FileName S ; Nom du fichier final
1 DeleteFileFl 1,0 = false
1 fichierArrivee S ; nom de fichier Final
1 err 1,0 = false
1 st X
recordDiva yftp.FtpResult retFtp
beginf
;Création du répertoire de partage sur le serveur ftp
FtpcreateDirectory (left(ServFtp), left(Login), left(Pwd), left(repTag))
;envoi du fichier dans le répertoire de partage du le serveur ftp
fichierArrivee = [ repTag "\" FileName ]
retFtp = FtpUpLoadFile (left(ServFtp), left(Login), left(Pwd), left(fileTemp), fichierArrivee)
if retftp.Status <> 0
FtpDeleteDirectory (left(ServFtp), left(Login), left(Pwd), left(repTag))
endif
if retFtp.Status <> 0
pv_mes_alert(4002)
err = true
endif
if DeleteFileFl
HDeleteFile(fileTemp, st, abort=FALSE)
Endif
freturn(err)
endf |
Exemples d’utilisation A5PMFTP
Info |
---|
Attention, en Saas il est interdit d’utiliser C:\ ou C:\divalto ou tout autre chemin pointant sur un lecteur physique, car cela sera rejeté en erreur. Utilisez des chemin temporaires windows ou des chemins inclus dans votre environnement Saas (chemin EDI FTP) |
Extrait du GTTMEDICODETRAIT qui dépose un fichier par ftp
Bloc de code |
---|
;fichier à déposer sur un serveur Ftp
If A5_FtpUploadSingleFile_ParamFTP(Enr_Eti_Fichier.WmFtpCod, localdirectory=FileNameBase(Enr_Eti_Fichier.TdfFichierImpName), localfile=FileNameLastSegment(Enr_Eti_Fichier.TdfFichierImpName)) <> 0
FTP_get_lastFtpResult_ErrTxt
ret = 2
Endif |
Extrait du WMTMTRANSPORT qui dépose un fichier par ftp
Bloc de code |
---|
if seek_ParamFTP(ParamFtp,TypeMsg.WmFtpCod) <> 0
Mes_Alert(20065,TypeMsg.WmFtpCod,bouton=MB_OK)
preturn
endif
A5_FtpUploadSingleFile_ParamFTP(TypeMsg.WmFtpCod, localfile='fichier') |
Extrait du WMTZ019 qui teste une url ftp
Bloc de code |
---|
Ret = A5_FtpConnectionTest_ParamFTP(ParamFtp.WmFtpCod)
if Ret = 0
Mes_Alert(21046, ParamFtp.WmFtpCod, bouton = MB_ICONINFORMATION, titre=Translate('Information'))
else
Mes_Alert(21047, ParamFtp.WmFtpCod, left(yftp.FTP_get_lastFtpResult_ErrTxt))
endif |
Extrait du SPPM000 qui télécharge plusieurs fichiers
Bloc de code |
---|
if A5_FtpDownloadMultipleFile_ParamFTP(SOPETACHE.WmFtpCod, DeleteRemoteFile = condition(SOPETACHE.SuppFtpFileOriFl = 2, true, false), contenuListe = 3, OpenHarmony = false) <> 0
SP_Log_ano_procerr(1560, SOPETACHE.WmFtpCod, SOPETACHE.WmFtpCod, FTP_get_lastFtpResult) ; ; 1560;Echec de connexion pour le paramètre $1.|Détail de l'erreur :|$2
Endif |
Sommaire | ||
---|---|---|
|