DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Communication / Fonctions FTP
  • Erreur de sécurité dans une connexion sécurisée de type FTPS
  • Permissions requises
  • Configuration nécessaire
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Connecte le poste en cours à un serveur FTP (File Transfer Protocol).
WINDEVWEBDEV - Code ServeurWindowsAndroidWidget Android Les modes de connexion sécurisés disponibles sont les suivants :
  • FTPS : FTP sécurisé selon le protocole SSL avec chiffrement implicite.
  • FTPES : FTP sécurisé selon le protocole SSL avec chiffrement explicite.
  • SFTP : FTP sécurisé par un tunnel SSH.
// Connexion du poste en cours au serveur FTP
ResConnecte = FTPConnecte("192.54.12.8")
Syntaxe
<Résultat> = FTPConnecte(<Serveur> [, <Nom de l'utilisateur> [, <Mot de passe> [, <Numéro de port> [, <Type de connexion> [, <Délai de connexion> [, <Clé privée> [, <Mot de passe de la clé>]]]]]]])
<Résultat> : Entier
  • Identifiant de la connexion,
  • 0 lors de la première connexion.
  • -1 en cas d'erreur. Le compte-rendu détaillé de l'erreur est connu grâce à la fonction ErreurInfo utilisée avec la constante errCode ou errMessage.
    En cas d'erreur d'identification, la fonction ErreurInfo utilisée avec la constante errCode renvoie la constante ftpErreurIdentification.
PHP Ce paramètre est de type Variant et correspond à l'identifiant de la connexion ou -1 en cas d'erreur.
<Serveur> : Chaîne de caractères
Nom du serveur FTP (par exemple "ftp.cdrom.com") ou adresse IP du serveur FTP (par exemple "192.54.12.8").
WINDEVWEBDEV - Code ServeurWindowsAndroidWidget Android Ce paramètre permet de définir le protocole utilisé :
  • si le nom du serveur commence par "ftp://", la connexion est en mode non sécurisé.
  • si le nom du serveur commence par "ftps://", la connexion est en mode sécurisé selon le protocole FTPS (FTP sécurisé par SSL avec chiffrement implicite).
  • si le nom du serveur commence par "ftpes://", la connexion est en mode sécurisé selon le protocole FTPES (FTP sécurisé par SSL avec chiffrement explicite).
  • si le nom du serveur commence par "sftp://", la connexion est en mode sécurisé par un tunnel SSH selon le protocole SFTP.
<Nom de l'utilisateur> : Chaîne de caractères optionnelle
  • Nom de l'utilisateur qui tente d'effectuer une connexion nominative (identification de l'utilisateur sur le serveur FTP). Ce paramètre est donné par le responsable du site FTP.
  • Chaîne vide ("") pour effectuer une connexion anonyme.
<Mot de passe> : Chaîne de caractères optionnelle
Mot de passe de l'utilisateur : permet d'identifier l'utilisateur sur le serveur FTP. Ce paramètre est donné par le responsable du site FTP.
Ce mot de passe correspond :
  • au <Mot de passe> spécifié si ce paramètre est différent d'une chaîne vide (""),
  • à l'adresse email de l'utilisateur si le paramètre <Nom de l'utilisateur> n'est pas spécifié ou est égal à une chaîne vide (""),
  • à une chaîne vide ("") si ce paramètre n'est pas spécifié et si le paramètre <Nom de l'utilisateur> est différent d'une chaîne vide ("").
Remarque : Si le mot de passe contient des caractères spéciaux, il peut être nécessaire de le convertir en UTF8 en utilisant la fonction ChaîneVersUTF8.
<Numéro de port> : Entier optionnel
Numéro de port sur lequel le serveur doit être lancé. Ce paramètre est donné par le responsable du site FTP.
Par défaut :
  • pour une connexion non sécurisée, ce port est le port 21.
  • WINDEVWEBDEV - Code ServeurWindowsAndroidWidget Android pour une connexion sécurisée en mode FTPS, ce port est le port 990.
  • WINDEVWEBDEV - Code ServeurWindowsAndroidWidget Android pour une connexion sécurisée en mode FTPES, ce port est le port 21.
  • WINDEVWEBDEV - Code ServeurWindowsAndroidWidget Android pour une connexion sécurisée en mode SFTP, ce port est le port 22.
<Type de connexion> : Constante optionnelle de type Entier
Type de connexion à effectuer :
ftpModeActif (ou Faux par compatibilité)Connexion active au serveur FTP.
Lors d'un transfert de fichiers, c'est le client qui prend l'initiative du transfert. Ce type de connexion peut être refusé par certains serveurs FTP protégés.
ftpModePassif (ou Vrai par compatibilité)
(Valeur par défaut)
Connexion passive au serveur FTP (mode PASV).
Lors d'un transfert de fichiers, c'est le serveur qui prend l'initiative du transfert. Ce type de connexion permet de franchir certains "firewalls".
Remarque : Si la connexion au serveur est en IPV6, alors la connexion se fera en mode passif étendu (car le mode passif ne supporte pas IPV6).
ftpModePassifEtenduConnexion passive étendue au serveur FTP (mode EPSV).
Lors d'un transfert de fichiers, c'est le serveur qui prend l'initiative du transfert. Ce type de connexion permet de franchir certains "firewalls".
Si le serveur ne supporte pas le mode passif étendu (la commande FEAT est envoyée au serveur pour connaître la capacité), la connexion est dégradée en mode passif simple.
Limitations :
  • Ce mode n'est pas supporté lors de l'utilisation du module "wininet" de Windows (voir fonction FTPParamètre) : la connexion est réalisée en mode ftpModePassif.
  • AndroidWidget AndroidJava Constante non disponible.
  • PHP Cette constante est identique à la constante ftpModePassif.
ftpModePassifIgnoreIPConnexion passive au serveur FTP (mode PASV).
Lors d'un transfert de fichiers en mode passif le serveur donne le port et l'adresse IP pour le transfert des données. Avec ce paramètre, seul le port est pris en compte, l'adresse IP est ignorée.
Ce type de connexion permet d'utiliser des serveurs FTP qui retournent des adresses IP non routables mais qui sont joignables par l'adresse IP de connexion
Limitations :
  • Ce mode n'est pas supporté lors de l'utilisation du module "wininet" de Windows (voir fonction FTPParamètre) : la connexion est réalisée en mode ftpModePassif.
  • AndroidWidget AndroidPHP Constante non disponible.
<Délai de connexion> : Entier optionnel ou Durée optionnelle
Nombre de secondes au bout desquelles la requête de connexion au serveur FTP est abandonnée (par défaut 20). Ce délai s'applique à toutes les opérations FTP réalisées sur cette connexion. Si aucune réponse du serveur n'est obtenue dans le <Délai de connexion> spécifié, la fonction FTPConnecte retourne -1.
Remarque : Ce paramètre peut correspondre à :
  • un entier correspondant au nombre de secondes,
  • une variable de type Durée,
  • l'indication directe de la durée (par exemple '1s').
PHP Ce paramètre correspond à un entier.
<Clé privée> : Chaîne de caractères optionnelle
WINDEVWEBDEV - Code ServeurWindowsAndroidWidget Android Nom et chemin du fichier correspondant à la clé privée utilisée lors d'une connexion en mode SFTP. Ce fichier doit avoir été généré au format OpenSSH.
Si ce paramètre n'est pas spécifié, la connexion sécurisée utilise une authentification par <Nom de l'utilisateur> / <Mot de passe>.
<Mot de passe de la clé> : Chaîne de caractères ANSI optionnelle
WINDEVWEBDEV - Code ServeurWindowsAndroidWidget Android Mot de passe du fichier contenant la clé privé utilisée lors d'une connexion en mode SFTP.
Si l'utilisation des chaînes en exécution est en UNICODE (onglet "Unicode" de la configuration courante), le mot de passe ne doit pas être donné entre guillemets. Il doit être contenu dans une variable de type chaîne déclarée en ANSI.
Si ce paramètre n'est pas spécifié, la connexion sécurisée utilise une authentification par <Nom de l'utilisateur> / <Mot de passe>.
Remarques
WINDEVWEBDEV - Code ServeurWindowsLinux

Erreur de sécurité dans une connexion sécurisée de type FTPS

Lors d'une connexion sécurisée, certaines erreurs de sécurité peuvent faire échouer la fonction :
  • certificat invalide ou ne provenant pas d'une société connue.
  • nom du site figurant dans le certificat ne correspondant pas à un serveur.
  • date du certificat non-valide ou expiré.
Il est possible de se connecter en ignorant ces erreurs. Pour cela, il suffit d'utiliser la variable FTP.IgnoreErreur :
Valeur de FTP.IgnoreErreur
(ces valeurs peuvent être combinées)
Description
ftpIgnoreCertificatInvalideLe certificat est ignoré.
ftpIgnoreCertificatExpiréLa date du certificat est ignorée.
ftpIgnoreNomCertificatInvalideLe nom du site figurant dans le certificat est ignoré.
ftpIgnoreRévocationLa révocation du certificat est ignorée.
// Exemple de gestion des erreurs
 
xnum est un entier
FTP.IgnoreErreur = ftpIgnoreCertificatExpiré + ftpIgnoreCertificatInvalide + ...
ftpIgnoreNomCertificatInvalide + ftpIgnoreRévocation
xnum = FTPConnecte("ftpes://Mon_Ip_Server", "Mon_User", "Mon_Password", 21, Vrai)
SI xnum =-1  ALORS
      Info(ErreurInfo(errMessage))
SINON
      Info("OK")
FIN
AndroidWidget Android

Permissions requises

L'utilisation de cette fonction entraîne la modification des permissions requises par l'application.
Permission requise : INTERNET
Cette permission autorise l'application à ouvrir des sockets réseau.
PHP

Configuration nécessaire

En PHP, il est nécessaire d'activer le module ftp.
Pour activer si nécessaire cette librairie en local, le fichier PHP.INI présent dans le répertoire Windows doit avoir la ligne "extension=php_ftp.dll".
Liste des exemples associés :
Les fonctions FTP Exemples unitaires (WEBDEV) : Les fonctions FTP
[ + ] Utilisation des principales fonctions FTP de WEBDEV pour :
- Se connecter à un serveur FTP
- Lister les fichiers et les répertoires présents sur le serveur FTP
- Récupérer des fichiers présents sur le serveur FTP
- Se déconnecter d'un serveur FTP
WD Transfert de fichiers par FTP Exemples complets (WINDEV) : WD Transfert de fichiers par FTP
[ + ] WD Transfert de fichiers par FTP

Cet exemple est un client FTP complet vous permettant de mémoriser plusieurs serveurs FTP. Vous pouvez alors effectuer des transferts multi-fichiers du poste local vers le serveur ou du serveur FTP vers le poste local. On utilise pour cela les fonctions standards du WLangage (FTPConnecte, etc...)
Composante : wd300com.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Problème de connexion en IPV6
Si le téléphone ANDROID est en 4G opérateur Bouygues qui fournit une adresse IP en IPV6, sur WINDEV MOBILE, la fonction FTPconnecte ne fonctionne pas.

Si on force la connexion opérateur en IPV4 sur le tel, la fonction fonctionne parfaitement.

Alors que le serveur SFTP accepte bien des clients en IPV6 : test avec partage de connexion et client filezilla OK
Nicolas
09 juin 2023
Fonctions FTP en connexion 4G
En 4G, de mon coté, j'ai du mettre l'IP du serveur dans le FTPConnecte car avec le nom de domaine, ça ne fonctionnait pas (alors qu'en Wifi je n'avais aucun souci)
Frédéric L.
24 mai 2023
fonctions FTP en connexion 4G sur Android
Attention, sur Android, les fonctions FTP ne fonctionnent qu'avec un serveur sécurisé (SFTP://) lorsqu'on est connecté en 4G (en Wifi un serveur non sécurisé suffit)
Kevin
05 juil. 2021

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale