Ftprog - client ftp très basique

Description

C'est une modification d'un client FTP qui permettait seulement l'upload de fichier.

J'ai ajouter des fonctionnalité pour télécharger, supprimer et lister les fichiers/dossiers présent sur le FTP.

Cette modification a été faite dans le cadre d'un cours de Correction de Programme au CEGEP.

Source / Exemple :


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Net;
using System.IO;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Test_FTP;

namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }
        private void Upload(string fichier)
        {
            try
            {
                string[] filename = fichier.Split('\\');
                string file = filename[filename.Length - 1];
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + txbServeur.Text + "/" + file);
                request.Method = WebRequestMethods.Ftp.UploadFile;
                request.KeepAlive = false;

                request.Credentials = new NetworkCredential(txbUserName.Text, txbPassWord.Text);

                FileStream sourceStream = File.OpenRead(fichier);
                byte[] fileContents = new byte[sourceStream.Length];
                sourceStream.Read(fileContents, 0, fileContents.Length);
                sourceStream.Close();
                request.ContentLength = fileContents.Length;

                Stream requestStream = request.GetRequestStream();
                requestStream.Write(fileContents, 0, fileContents.Length);

                requestStream.Close();

                FtpWebResponse response = (FtpWebResponse)request.GetResponse();

                int codeMessage = Convert.ToInt32(response.StatusCode);

                response.Close();
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message, "Upload Error");
            }

        }
        private void button1_Click(object sender, EventArgs e)
        {
            openFileDialog1.ShowDialog();
        }

        private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
        {
            txbFilePath.Text = openFileDialog1.FileName;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Upload(txbFilePath.Text);
        }

        private void btnCharger_Click(object sender, EventArgs e)
        {
           string dossier = "/";
            List<string> listeFichiers = new List<string>();

            List<string> sansDetails = new List<string>();
            List<string> avecDetails = new List<string>();

            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + txbServeur.Text + dossier);
            request.Method = WebRequestMethods.Ftp.ListDirectory;
            request.Credentials = new NetworkCredential(txbUserName.Text, txbPassWord.Text);
            request.KeepAlive = false;

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();

            Stream responseStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(responseStream);

            while (!reader.EndOfStream)
                sansDetails.Add(reader.ReadLine());
            reader.Close();
            responseStream.Close();
            response.Close();

            string[] TsansDetails = sansDetails.ToArray();

            for (int c = 0; c < TsansDetails.Length; c++)
            {
                if (sansDetails[c] != "." && sansDetails[c] != "..")
                    listeFichiers.Add(TsansDetails[c]);
            }
             
            lsbFichier.DataSource = listeFichiers;
        }

        private void btnDL_Click(object sender, EventArgs e)
        {
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + txbServeur.Text + "/" + lsbFichier.SelectedItem.ToString());
            request.Method = WebRequestMethods.Ftp.DownloadFile;

            request.Credentials = new NetworkCredential(txbUserName.Text, txbPassWord.Text);

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();

            Stream responseStream = response.GetResponseStream();

            FileStream writeStream = new FileStream(@"C:\Test\" + lsbFichier.SelectedItem.ToString(), FileMode.Create);

            int Length = 2048;
            byte[] buffer = new byte[Length];
            int bytesRead = responseStream.Read(buffer, 0, Length);

            while (bytesRead > 0)
            {
                writeStream.Write(buffer, 0, bytesRead);
                bytesRead = responseStream.Read(buffer, 0, Length);
            }

            responseStream.Close();
            writeStream.Close();

            int codeMessage = Convert.ToInt32(response.StatusCode);

            response.Close();

            MessageBox.Show("Le fichier " + lsbFichier.SelectedItem.ToString() + " a été téléchargé dans " + @"C:\Test\");
        }

        private void btnSupp_Click(object sender, EventArgs e)
        {
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + txbServeur.Text + "/" + lsbFichier.SelectedItem.ToString());
            request.Method = WebRequestMethods.Ftp.DeleteFile;

            request.Credentials = new NetworkCredential(txbUserName.Text, txbPassWord.Text);

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();

            int codeMessage = Convert.ToInt32(response.StatusCode);

            response.Close();
            MessageBox.Show("Le fichier " + lsbFichier.SelectedItem.ToString() + " a été supprimé D:");
        }
    }
}

Conclusion :


Le programme n'est pas parfait et il y a clairement place à d'autres fonctionnalitées

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.