Comme le titre l'indique, il est possible de récupérer ou de transférer des fichiers via FTP à partir d'un programme écrit en basic Panoramic.
Rien de tel qu'un petit exemple pour expliquer la chose...
Tout d'abord un grand merci à DJ Peters qui nous a fournit tout les fichiers nécessaires pour réaliser cela !!!
Nous avons besoin d'une DLL qui va effectuer tout le travail et des deux fichiers TCP_INCLUDE2.bas et FTP_INCLUDE2.bas. Ces deux fichiers sont les librairies PANORAMIC qui contiennent les fonctions nécessaires pour établir une connexion FTP. Ils doivent être inclus en début de programme :
#include "TCP_INCLUDE2.bas" #include "FTP_INCLUDE2.bas"
Nous allons voir en détail quelques unes de ces fonctions puis au final un petit programme d'exemple.
Pour établir la connexion, il nous faut appeler la procédure FTPConnect. Cette procédure a besoin de trois variables:
La variable FTP_OK% renvoie 1 si la connexion s'est correctement réalisée.
Exemple:
FTP_SERVER$ = "ftp.monSiteFtp.org" FTP_USER$="toto" FTP_PASSWORD$ = "MonMotDePasse" gosub FTPConnect if FTP_OK% <> 1 message "Echec de connection !" end_if
Change Working Directory : cette commande permet de changer le répertoire courant. Cette commande nécessite le chemin d'accès au répertoire à atteindre comme argument (variable FTP_DIR$).
La variable FTP_OK% est à 1 si la commande a été correctement réalisée.
Cette commande (RETRIEVE) demande au serveur FTP une copie du fichier. Elle a besoin de deux variables:
La variable FTP_OK% renvoie 1 si la commande s'est correctement réalisée.
La variable FTP_FIL_SIZE% renvoie le nombre d'octets transférés.
Cette procédure doit être appelée pour clôturer la connexion.
Note : Elle ferme le control channel et exécute la commande QUIT.
Nous avons une image logo.gif dans le répertoire 'img' sur le serveur. On souhaite télécharger cette image et la sauvegarder sur notre disque dur en tant que image.gif.
Note: Vous pouvez sélectionner l'ensemble du code en double-cliquant dessus.
#include "TCP_INCLUDE2.bas" #include "FTP_INCLUDE2.bas" ' MSG_LOG%: Cette variable permet de basculer en mode "verbose" ' l'objet MSG_LOG% doit être OBLIGATOIREMENT un mémo ou une liste MSG_LOG% = 1 : ' Valeur par défaut = 0 (désactivé) memo MSG_LOG% : width MSG_LOG%, width(0) - 5 height MSG_LOG%, height(0) - 20 ' on établi la connexion avec le serveur FTP FTP_SERVER$ = "ftp.monSiteFtp.org" FTP_USER$ = "toto" FTP_PASSWORD$ = "MonMotDePasse" gosub FTPConnect if FTP_OK% = 1 ' on sélectionne le répertoire img du serveur FTP FTP_DIR$ = "/img" : gosub FTPCWD if FTP_OK% = 1 ' puis on télécharge le fichier logo.gif et on le sauvegarde ' sous le nom image.gif sur notre disque FTP_SOURCE$ = "logo.gif" : FTP_TARGET$ = "image.gif" gosub FTPRETR if FTP_OK% = 1 message "le fichier "+FTP_SOURCE$+" a été sauvegardé en tant que " + FTP_TARGET$ else message "Echec de téléchargement!" end_if else message "le répertoire "+FTP_DIR$+" n'existe pas ou est inaccessible!" end_if ' on a fini le téléchargement : on ferme la connexion gosub FTPDisconnect else message "Impossible de se connecter à " + FTP_SERVER$ end_if
C'est tout simple n'est-ce pas ?
De même que pour le téléchargement, on utilise les variables FTP_SOURCE$ et FTP_TARGET$.
FTP_SOURCE$ = "source.gif" FTP_TARGET$ = "destination.gif" gosub FTPSTOR
Le principe de l'appel est toujours le même quelque soit la commande. Un tableau récapitulatif des commandes se trouve sur la page suivante. Le plus simple, c'est de faire des essais et de regarder ce que renvoie la commande...