Le FTP
Rebol comporte nativement l'accès au protocole FTP,
File
Transfer Protocol.
FTP permet entre autres de downloader/uploader/supprimer des fichiers, créer/supprimer
des répertoires, changer de répertoire ...
On peut développer un gestionnaire FTP, faire des automates de copie
de fichiers .... Une URL FTP est de la forme ftp://utilasteur:motdepasse@siteFTP/
ou ftp://siteFTP/ pour une connexion de type anonyme.
On peut déclarer une variable de type URL! Voici un exemple simple permettant
de
lister le contenu du répertoire racine du site ftp ftpsite.xyz.com avec un utilisateur et un mot de passe :
rebol [
title: "Ftp : exemple de listage d'un repertoire via FTP"
author: "rebolZone"
version: 1.0.0
]
ftpdir: make url!
; utilisateur = utilsateur1 et mot de passe = zebra3
ftpdir: ftp://utilisateur1:zebra3@ftpsite.xyz.com/
dirs: read ftpdir
; affichage des fichiers et dossiers
probe dirs
;fin de programme
input
L'exemple suivant montre comment
créer un répertoire nommé
test1 à la racine (attention au / final, test1/) :
rebol [
title: "Ftp : creation d'un repertoire nomme test1 via FTP"
author: "rebolZone"
version: 1.0.0
]
; création de la variable
ftpsite: make url!
; Affectation de l'Url dans la variable
ftpSite: ftp://utilisateur1:zebra3@ftpsite.xyz.com/test1/
; Création du répertoire test1 à la racine
make-dir ftpSite
;fin de programme
input
On peut également supprimer un répertoire. L'exemple suivant montre
comment
supprimer un répertoire nommé test1 (attention
au / final, test1/) :
rebol [
title: "Ftp : Suppression d'un répertoire nommé test1 via FTP"
author: "rebolZone"
version: 1.0.0
]
; création de la variable
ftpsite: make url!
; Affectation de l'Url dans la variable
ftpSite: ftp://utilisateur1:zebra3@ftpsite.xyz.com/test1/
; suppression du répertoire test1 par FTP
delete ftpSite
;fin de programme
input
On peut
renommer un répertoire avec l'intruction rename
(exemple à taper dans la console Rebol) :
; renomme le repertoire test1 en archives
rename ftp://utilisateur1:zebra3@ftpsite.xyz.com/test1/ archives/
On peut également obtenir les
infos (date, taille ...) d'un fichier
situé sur un serveur FTP :
rebol [
title: "Ftp : Infos d'un fichier"
author: "rebolZone"
version: 1.0.0
]
; création de la variable
ftpFile: make url!
; Affectation de l'Url dans la variable
ftpFile: ftp://utilisateur1:zebra3@ftpsite.xyz.com/index.html
; Lecture des infos par FTP avec info?
infos: info? ftpFile
probe infos
;fin de programme
input
En combinant une instruction either, on peut
tester l'existance d'un fichier:
rebol [
title: "Ftp : test l'existance d'un fichier"
author: "rebolZone"
version: 1.0.0
]
; création de la variable
ftpFile: make url!
; Affectation de l'Url dans la variable
ftpFile: ftp://utilisateur1:zebra3@ftpsite.xyz.com/index.html
either exists? ftpfile
[
print "Le fichier existe, voici ses infos : "
infos: info? ftpFile
probe infos
]
[
print "Le fichier n'existe pas"
]
;fin de programme
input
La
copie d'un fichier texte sur le serveur FTP est réalisée
par l'instruction write, l'intruction read lisant le fichier en local :
rebol [
title: "Ftp : Copie d'un fichier texte sur le serveur FTP"
author: "rebolZone"
version: 1.0.0
]
write ftp://utilisateur1:zebra3@ftpsite.xyz.com/mondoc.html read %mondoc.html
;fin de programme
input
La
copie d'un fichier binaire sur le serveur FTP est réalisée
en ajoutant le rafiinement /binary aux instructions write et read :
write/binary ftp://utilisateur1:zebra3@ftpsite.xyz.com/prog.exe read/binary %/C/tmp/prog.exe
L'opération inverse,
le téléchargement d'un fichier situé
sur le serveu FTP, se fait ainsi :
rebol [
title: "Ftp : telechargement d'un fichier texte a partir du serveur FTP"
author: "rebolZone"
version: 1.0.0
]
; recuperation du contenu du fichier dans une variable
contenu: read ftp://utilisateur1:zebra3@ftpsite.xyz.com/mondoc.html
; autre solution, copie en local du fichier
write %/c/tmp/fic1.html read ftp://utilisateur1:zebra3@ftpsite.xyz.com/mondoc.html
;fin de programme
input
Remarques : si le fichier à télécharger est un fichier
binaire, il faut ajouter les options /binary aux read et write.