Web Development Knowledge Base
| |
Sections :
You too, please publish your useful code snippets in any programming language : write an article ! Plateforme d'envoi de gros fichiers en ligne Dépannage site web Blog infogérance Hébergement e-mail |
Olivier Ligny - - 11/03/2008 - vue 11668 fois
Transférer des fichiers par FTP avec JavaScriptVoici un bout de code que j'avais du écrire il y a fort longtemps ... Le but est de se connecter à un serveur FTP pour y récupérer certains fichiers et les télécharger sur le bureau, ou ailleurs, afin de faire une mise à jour de fichiers locaux par exemple. Le serveur peut nécessiter une authentification, ou pas (accès anonyme). Ce script ne peut fonctionner qu'en environnement "trusté", c'est à dire si vous exécutez le script dans un HTA ou en local avec les autorisations nécessaires.
<script>
function GetEnvVar(name)
{
var objShell=new ActiveXObject("WScript.Shell")
var env=objShell.Environment;
for(e=new Enumerator(env); !e.atEnd(); e.moveNext())
if(e.item(e).indexOf('TEMP')==0) return e.item(e).substring(5,100);
}
// paramètres
var ftp_host = "127.0.0.1";
var ftp_user = "user";
var ftp_pass = "pass";
var files = new Array("file.txt", "file.gif");
var remote_path = "/";
var local_path = "c:\windows\bureau";
// fichiers temporaires
var UpdBatPath = "C:\WINDOWS\~UpdBat.bat";
var FTPComsPath = "C:\WINDOWS\~FTPComs.txt";
// création de l'objet FileSystemObject
var fso = new ActiveXObject("Scripting.FileSystemObject");
// on écrit le fichier batch
fso.CreateTextFile(UpdBatPath);
var UpdBat = fso.OpenTextFile(UpdBatPath, 2);
UpdBat.WriteLine("@echo off");
UpdBat.WriteLine("prompt $H");
UpdBat.WriteLine("cls");
UpdBat.WriteLine("echo ================================================================================");
UpdBat.WriteLine("echo [ MISE A JOUR EN COURS ]");
UpdBat.WriteLine("");
UpdBat.WriteLine("echo Veuillez patienter");
UpdBat.WriteLine("echo Connexion au serveur et telechargement des mises a jour ...");
UpdBat.WriteLine("");
UpdBat.WriteLine("echo ================================================================================");
UpdBat.WriteLine("");
UpdBat.WriteLine("ftp -s:"+FTPComsPath); // (la commande qui lancera le script FTP écrit dans l'autre fichier)
UpdBat.WriteLine("");
UpdBat.WriteLine("echo ================================================================================");
UpdBat.WriteLine("echo [ MISE A JOUR TERMINEE ]");
UpdBat.WriteLine("echo ================================================================================");
UpdBat.WriteLine("");
UpdBat.Close();
// on écrit le script de commande FTP
fso.CreateTextFile(FTPComsPath);
var FTPComs = fso.OpenTextFile(FTPComsPath, 2);
FTPComs.WriteLine("open "+ftp_host);
FTPComs.WriteLine(ftp_user);
FTPComs.WriteLine(ftp_pass);
FTPComs.WriteLine("lcd "+local_path);
FTPComs.WriteLine("hash");
FTPComs.WriteLine("binary");
for(fo=0; fo<files.length; fo++) FTPComs.WriteLine("get "+remote_path+files[fo]);
FTPComs.WriteLine("bye");
FTPComs.Close();
// on exécute le tout
new ActiveXObject("WScript.Shell").Run("%comspec% /c "+UpdBatPath, 1, true);
// suppression des fichiers temporaires
fso.GetFile(FTPComsPath).Delete();
fso.GetFile(UpdBatPath).Delete();
</script>
|
| Nos partenaires : iPhone 8 Cases & Protection | |