DevKB
Web Development Knowledge Base
HOME | TOP 20 | WRITE AN ARTICLE |
Sections :



RSS RSS Feed

You too, please publish your useful code snippets in any programming language :
write an article !


Valid HTML 4.0 Transitional

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 11058 fois

Transférer des fichiers par FTP avec JavaScript

Voici 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.
Il utilise le programme "ftp.exe" disponible en standard sous Windows (c:\windows\system32\ftp.exe)


<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>




Write a comment :
Your name :     E-mail (optional) :

AntiSpam : what animal is visible on this picture ? :

Nos partenaires : iPhone 8 Cases & Protection