PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • Gestion de la progression de transfert
  • Délai de transfert
  • Navigateur Internet
  • Droits des utilisateurs
  • Chemin relatif et absolu
  • Serveur FTP de type AS/400
  • Permissions requises
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Transfère un fichier ou un répertoire d'un serveur FTP (File Transfer Protocol) sur le poste en cours.
Versions 15 et supérieures
Android Cette fonction est désormais disponible pour les applications Android.
Nouveauté 15
Android Cette fonction est désormais disponible pour les applications Android.
Android Cette fonction est désormais disponible pour les applications Android.
Versions 18 et supérieures
Widget Android Cette fonction est désormais disponible en mode Widget Android.
WINDEVLinux Cette fonction est désormais disponible pour les applications WINDEV sous Linux.
WEBDEV - Code ServeurLinux Cette fonction est désormais disponible pour les sites WEBDEV sous Linux.
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Nouveauté 18
Widget Android Cette fonction est désormais disponible en mode Widget Android.
WINDEVLinux Cette fonction est désormais disponible pour les applications WINDEV sous Linux.
WEBDEV - Code ServeurLinux Cette fonction est désormais disponible pour les sites WEBDEV sous Linux.
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Widget Android Cette fonction est désormais disponible en mode Widget Android.
WINDEVLinux Cette fonction est désormais disponible pour les applications WINDEV sous Linux.
WEBDEV - Code ServeurLinux Cette fonction est désormais disponible pour les sites WEBDEV sous Linux.
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
WINDEVWEBDEV - Code ServeurEtats et RequêtesAndroidWidget AndroidJavaAjaxCode Utilisateur (MCU)
// Récupération du fichier "/Document/Fichier.txt" présent sur le serveur FTP
// dans le répertoire "D:\Temp" sur le poste en cours
ResRécupère = FTPRécupère(7, "/Document/Fichier.txt", "D:\Temp")
Windows Mobile
// Récupération du fichier "/Document/Fichier.txt" présent sur le serveur FTP
// dans le répertoire "\Temp" sur le poste en cours
ResRécupère = FTPRécupère(7, "/Document/Fichier.txt", "\Temp")
Syntaxe
<Résultat> = FTPRécupère(<Identifiant de la connexion> , <Fichier/Répertoire à récupérer> , <Fichier/Répertoire destination> [, <Nom de la procédure> [, <Mode de transfert>]])
<Résultat> : Booléen
  • Vrai si le transfert a été effectué,
  • Faux dans le cas contraire. Pour connaître le libellé de l'erreur, utilisez la fonction ErreurInfo avec la constante errMessage.
    Remarque : Le résultat peut être incorrect sur certains serveurs Unix : un fichier ou un répertoire existant peut ne pas être trouvé.
<Identifiant de la connexion> : Entier
Identifiant de la connexion, obtenu avec la fonction FTPConnecte.
PHP Ce paramètre est de type Variant.
<Fichier/Répertoire à récupérer> : Chaîne de caractères (avec guillemets)
Nom et chemin absolu (ou relatif) du fichier (ou du répertoire) à récupérer. Ce fichier (ou ce répertoire) est situé sur le serveur FTP. Les parties du chemin sont séparées par des "slash" (barre oblique normale, "/").
Attention : le nom du répertoire est case sensitive. Il faut utiliser la même casse que sur le serveur FTP (majuscules/minuscules).
Il n'est pas possible de donner de caractères joker (* ou ?). Pour récupérer plusieurs fichiers, utilisez préalablement la fonction FTPListeFichier pour avoir le nom des fichiers à récupérer.
Un chemin absolu est du type "</NomRépertoire>/<NomFichier>". L'arborescence obtenue est "/<NomRépertoire>/<NomFichier>".
Un chemin relatif est du type "<NomRépertoire>/<NomFichier>". L'arborescence obtenue est "/<RépertoireCourantServeur>/<NomRépertoire>/<NomFichier>".
Si ce paramètre correspond à un répertoire, tous les fichiers de ce répertoire sont récupérés. Un répertoire de même nom est créé sur le poste en cours à l'emplacement désigné par le paramètre <Fichier/Répertoire destination>.
Si ce paramètre correspond à un fichier :
  • si le paramètre <Fichier/Répertoire destination> est un répertoire existant sur le poste en cours, le fichier à récupérer est copié dans le répertoire destination.
  • si le paramètre <Fichier/Répertoire destination> est un fichier existant sur le poste en cours, le fichier à récupérer est copié et renommé.
<Fichier/Répertoire destination> : Chaîne de caractères (avec guillemets)
Nom et chemin complet (ou relatif) du fichier (ou du répertoire) destination. Un chemin de type UNC peut être utilisé.
Windows Mobile Il n'est pas possible d'utiliser un chemin relatif ou un chemin de type UNC.
<Nom de la procédure> : Chaîne de caractères optionnelle (avec ou sans guillemets)
Nom d'une procédure WLangage appelée automatiquement pour contrôler la progression du transfert. Cette procédure peut être une méthode globale de classe (de la forme <Nom Classe>::<NomMéthodeGlobale>).
PHP Ce paramètre n'est pas disponible.
<Mode de transfert> : Constante optionnelle de type Entier
Mode de transfert réalisé :
FTPModeBinaire
(Valeur par défaut)
ftpModeBinaire
(Valeur par défaut)
Transfert réalisé en mode binaire. Le fichier est strictement identique entre l'envoi et la réception.
FTPModeASCIIftpModeASCIITransfert réalisé en mode ASCII. Ce mode est utilisé pour un transfert entre deux systèmes d'exploitation différents, par exemple UNIX vers Windows : le fichier transféré est livré dans le format ASCII du système destinataire.
Remarques
WINDEVWEBDEV - Code ServeurEtats et RequêtesAndroidWidget AndroidWindows MobileJavaAjaxCode Utilisateur (MCU)

Gestion de la progression de transfert

La fonction FTPRécupère est une fonction bloquante : aucune autre action ne peut être effectuée jusqu'à la fin du transfert en cours.
Pour contrôler la progression du transfert, la fonction FTPRécupère peut appeler automatiquement la procédure <Nom de la procédure> à intervalles réguliers (tous les 64 Ko).
Cette procédure est déclarée de la manière suivante :
PROCEDURE <Nom de la procédure> (<Taille totale>, <Taille transférée>)
où :
  • <Taille totale> est un entier correspondant à la taille totale du fichier ou du répertoire en cours de transfert.
  • <Taille transférée> est un entier correspondant au nombre d'octets déjà transférés.
Il est possible dans cette procédure :
  • d'afficher une jauge de progression,
  • de savoir si le transfert est terminé (<Taille totale>=<Taille transférée>).
La fonction FTPRécupère ne peut pas être interrompue tant qu'il reste des fichiers à transférer. Pour forcer l'interruption du parcours, il faut utiliser la ligne suivante dans la procédure <Nom de la procédure> :
RENVOYER Faux
Dans les autres cas (pour poursuivre le parcours), la procédure <Nom de la procédure> DOIT renvoyer Vrai.
Si la procédure <Nom de la procédure> ne retourne aucune valeur (ni Vrai, ni Faux), une erreur est générée.

Délai de transfert

Par défaut, toutes les fonctions FTP échouent si aucune réponse du serveur FTP n'est reçue après 20 secondes. Ce délai peut être modifié lors de la connexion au serveur FTP avec la fonction FTPConnecte.
WINDEVWEBDEV - Code ServeurEtats et RequêtesWindows MobileAjaxCode Utilisateur (MCU)

Navigateur Internet

La fonction FTPRécupère nécessite l'installation d'Internet Explorer version 3 ou supérieure.
En cas de difficulté, il est conseillé de tester avec le navigateur en lui passant directement un lien de la forme "ftp://serveur/...". En cas de problème avec Internet Explorer (par exemple avec un serveur UNIX), utilisez directement la fonction FTPCommande.

Droits des utilisateurs

La récupération des fichiers présents sur un serveur FTP n'est possible que pour un utilisateur ayant les droits en lecture sur le serveur FTP. En règle générale, les utilisateurs "anonymes" ont les droits en lecture.

Chemin relatif et absolu

Les notions de chemin relatif et de chemin absolu sont très importantes dans une application FTP.
  • Un chemin commençant par un slash est considéré comme un chemin absolu : il s'agit du chemin par rapport à la racine du serveur FTP (paramètre propre au serveur).
    ex: /pub/user/JULIE
  • Si le chemin ne commence pas par un slash, il est considéré comme un chemin relatif, c'est-à-dire le chemin par rapport au répertoire en cours. Ce répertoire en cours peut être connu ou modifié avec la fonction FTPRepEnCours.
Lors de la connexion à un site FTP, le répertoire initial, le "home directory" de l'utilisateur n'est pas forcément la racine du serveur FTP. Il est donc conseillé d'utiliser des chemins relatifs.

Serveur FTP de type AS/400

La fonction FTPRécupère ne fonctionne pas correctement si le serveur FTP est présent sur un AS/400.
Dans ce cas, il convient d'utiliser la fonction FTPCommande avec la commande FTP "RETR" (pour plus de détails sur les fonctions FTP, consultez la documentation du serveur FTP utilisé).
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.
Composantes
WINDEVWEBDEV - Code ServeurEtats et Requêtes wd230com.dll
Windows Mobile wp230com.dll
Java wd230java.jar
Linux wd230com.so
Android wd230android.jar
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
L'application ne répond plus en utilisant FTP Récupère
J'utilise FTPRécupère pour récupérer une liste de fichiers par FTP et les traiter au fur et à mesure de leur arrivée. Une fois sur 3 en moyenne, l'application se fige et ne me rends pas la main. Je pensais pourtant qu'il y avait un timeout pour rendre la main même dans le cas d'une perte de connexion. Comment régler ce problème ?
De plus, le temps de téléchargement est très très long lorsqu'il y a beaucoup de fichiers sur le serveur distant : pour télécharger un fichier de 385octets, il faut environ 10 à 50 secondes pour la fonction Windev alors que Filezilla télécharge plusieurs fichiers de cette taille en 1 seconde. Il se peut que la fonction Windev liste tous les fichiers du dossier distant à chaque téléchargement de fichier !
phil
21 juin 2017