Voici le code source d'un composant FTP ainsi qu'un squelette d'application
cliente FTP utilisant ce composant.
Les fonctionnalit�s FTP de base sont impl�ment�es (Dir, Download, Upload, Delete,
Rename, ...).
Il s'agit l� d'un exemple de code, et non d'une application compl�te test�e.
Vous pouvez l'utiliser librement l'application, mais des bugs peuvent survenir
lors de l'utilisation.
T�l�charger le code source : FTPCom.zip
(31 Ko)
T�l�charger l'ex�cutable : FTPComExe
(32 Ko)
Attention, le
RunTime Microsoft .Net est indispensable pour ex�cuter le programme. (20,4
Mb)

Voici un exemple de code pour utiliser ce composant.
L'exemple est en C#, mais vous pouvez utiliser �galement ce composant avec tout
autre langage compatible avec le Framework .Net de Microsoft.
Utilisation du composant avec Visual Studio .Net
Ajouter le composant dans la ToolBox (customize Toolbox) et faites le glisser
sur votre feuille (form).
Le code projet contient un client FTP simple.
Vous aurez peut �tre � changer la R�f�rence FTPCom dans votre projet pour tester
l'exemple.
Retirer l'ancienne r�f�rence et ajouter la r�f�rence (Add Reference) � FtpCom.DLL
Exemple de code
Se connecter au serveur FTP.
ftpc.Username = EFUsername.Text;
ftpc.Password = EFPassword.Text;
ftpc.Hostname = CBFTPServer.Text;
ftpc.Connect();
Une fois la connection �tablie, l'objet re�oit l'�v�nement Connected,
il est alors possible d'envoyer la commande Login.
private void ftpc_Connected(object sender, FTPCom.FTPEventArgs e)
{
ftpc.Login();
}
L'�v�nement Logged est envoy� apr�s une connection r�ussie.
La m�thode Dir() permet d'obtenir la liste des fichiers d'un dossier, ici la
racine du serveur.
private void ftpc_Logged(object sender, FTPCom.FTPEventArgs e)
{
ftpc.Dir();
}
L'�v�nement DirCompleted Event est re�u quand la commande Dir est termin�e.
La propri�t� FileCount contient le nombre de fichiers, utilisez IsFolder()
pour d�tecter s'il s'agit d'un fichier ou d'un dossier.
GetFileName() et GetFileSize() retournent le nom et la taille
des fichiers
Note : Une collection de fichiers devrait �tre impl�ment�e ici ! pour
l'instant j'utilise un tableau.
private void ftpc_DirCompleted(object sender, FTPCom.FTPEventArgs e)
{
int i = 0;
int idimage = 0;
string msg;
msg = "Transfered " + e.TotalBytes.ToString() + " bytes in " + ((float)e.TimeElapsed / 1000).ToString() + " seconds" + CRLF;
TextLog.SelectionColor = Color.Black;
TextLog.AppendText(msg);
ServerView.BeginUpdate();
ServerView.Items.Clear();
ImgListServerSmall.Images.Clear();
ListViewItem lvItem = new ListViewItem("..");
ServerView.Items.Add(lvItem);
for (i = 0; i < ftpc.FileCount; i++)
{
if (ftpc.IsFolder(i))
{
string[] items = new String[2];
items[0] = ftpc.GetFileName(i);
items[1] = ftpc.GetFileSize(i).ToString();
ImgListServerSmall.Images.Add (m_IconFolder);
ServerView.Items.Add(new ListViewItem(items, idimage++));
}
}
for (i = 0; i < ftpc.FileCount; i++)
{
if (!ftpc.IsFolder(i))
{
string[] items = new String[2];
items[0] = ftpc.GetFileName(i);
items[1] = ftpc.GetFileSize(i).ToString();
ImgListServerSmall.Images.Add (ExtractIcon.GetIcon(items[0], false));
ServerView.Items.Add(new ListViewItem(items, idimage++));
}
}
ServerView.EndUpdate();
this.Cursor = Cursors.Default;
}
Pour T�l�charger un fichier sur un glisser d�poser dans la fen�tre locale :
private void ServerView_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button != 0)
{
string msg = "";
for (int i = 0; i < ServerView.SelectedItems.Count; i++)
{
msg += ServerView.SelectedItems[i].Text + "\n";
}
ServerView.DoDragDrop(msg, DragDropEffects.Copy | DragDropEffects.Move);
}
}
private void LocalView_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Text))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}
private void LocalView_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
string msg = e.Data.GetData(DataFormats.Text).ToString();
string[] filename = msg.Split(new char[] { '\n' });
foreach (string sfile in filename)
{
ftpc.FileDownload(sfile);
}
}
Une fois le t�l�chargement termin�, l'�v�nement FileDownloadCompleted
est �mis
private void ftpc_FileDownloadCompleted(object sender, FTPCom.FTPEventArgs e)
{
string msg = "Transfered " + e.TotalBytes.ToString() + " bytes in " + ((float)e.TimeElapsed / 1000).ToString() + " seconds" + CRLF;
TextLog.SelectionColor = Color.Black;
TextLog.AppendText(msg);
FillLocalView(m_currentFolder);
}
Suppression des fichiers s�lectionn�s
for (int i = 0; i < ServerView.SelectedItems.Count; i++)
{
ftpc.Delete (ServerView.SelectedItems[i].Text);
}
ftpc.Dir();
Renommer un fichier
private void ServerView_AfterLabelEdit(object sender, System.Windows.Forms.LabelEditEventArgs e)
{
if (e.Label != null)
{
this.Cursor = Cursors.WaitCursor;
string newfilename = e.Label;
if (m_previousfilename == "New Folder")
{
ftpc.DirCreate(newfilename);
}
else
{
ftpc.Rename(m_previousfilename, newfilename);
}
ftpc.Dir();
}
}
Fermer la connection
ftpc.Disconnect();
ServerView.Items.Clear();
J'esp�re que cet exemple vous sera utile, les commentaires sont les bienvenus.
J�r�me Lacaille
Ingénieur développeur
Spécialiste en Nouvelles Technologies
Webmastering
/ Développement
|