Actualites��Forum��Archives
�Inscription | Livre d'or | Plan du site | 93� visiteurs actifs �
�
���� A la Une
� Actualit�s
� Dossiers
� Logiciels
� Coin Technique
� Agenda des salons
� Emploi
� Outils Web
� Annuaire Web

���� Archives
� S�lection
� Exp�rience qui parle
� Internet quotidien
� Tous les dossiers

���� Forum
� Forum SAM-MAG

���� Guides
� Check-list de la promotion des sites
� Promouvoir et r�f�rencer les sites web

���� Contact
� Nous contacter
� Abonnement Newsletter D�sabonnement
� La protection des donn�es personnelles

���� Login
���
����
Inscription

Mot de passe oubli�?

�� Sondage
Les points que vous souhaitez voir traiter � l'avenir ?
3%Actualit�
30%Documentation
53%Exemples de sources
3%Liste de liens
12%Revue logiciels

�� Sondage
Vous vous int�ressez plut�t �
77%Programmation
9%Syst�me
10%Logiciel
4%Mat�riel

�� Sondage
votre niveau technique ?
16%Amateur
37%D�butant
38%Professionnel
9%Expert

�� Sondage
Comptez-vous d�poser un .EU ?
15%Oui c'est d�j� fait
15%tres certainement
5%probablement
10%peut �tre
55%non

���� Rechercher
����
���

�� R�f�rencement
�� R�f�rencement sur mesure
�� R�f�rencement international
�� Achat de mots cl�s
�� Devenir revendeur

�� Diagnostic
�� Calcul de popularit�
�� Pr�sence WEB
�� WebPage Alerte
�� Google position

�� Services
�� Mise en conformit� de site
�� H�bergement
�� Sponsoring de la newsletter Sam-Mag
�� Contacter les m�dias
�� Contenu �ditorial
�� Webmastering / D�veloppement

�� Archives
� Merise : 2�me partie�
� Merise: 3�me partie�
� Merise: 4 �me partie�
� Merise: 5�me Partie�
� Merise: 6�me Partie�
� Merise: 7�me Partie�
� Merise: 8�me Partie�
� GOOGLE ouvre son moteur aux d�veloppeurs !�
� Structurer correctement un document XML�
� Il est temps de passer au XHTML 1.0�
� Votre premi�re page XHTML 1.0�
� Les expressions r�guli�res�

Powered by FullXML
�Coin Technique


code source C# : Composant FTP

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

�Imprimer�Donner votre avis

Les r�actions


sftp
par�[04.06.2004�10:41 - giill]
Bien ce code...Ma question est : peut-on l'�tendre facilement pour faire du secure FTP ? J'y connais pas grand chose dans ce domaine en fait...

pas de souci
par�[02.06.2004�14:11 - Jam]
En cas de probl�me, allez-voir � cette adresse
http://www.codeproject.com/csharp/ftp.asp

Le composant
par�[02.06.2004�13:56 - dju]
Je doit etre nul. Impossible de me connecter, et aucun message d'erreur avec le try catch.
En plus je recoi meme pas le FTPC_connected!!!!!!!!!!!!!!!!!!!!

Actualit�s du Net


�

Ce site respecte la loi Informatique et Libert�s.
Pour en savoir plus sur la protection des donn�es personnelles, cliquez

Sam-Mag - Actualit�s du Web - Webmaster ressources - Mentions l�gales
Un site du r�seau ACORUS 1996-2005 � Copyright ACORUS
All rights reserved.

Webmaster