C# – FtpWebRequest ile FTP(File Transfer Protocol) Üzerinden Dosya Yükleme

Geçtiğimiz günlerde geliştirdiğimiz bir uygulama içerisinde oluşturulan personel masraf ödemelerinin talimatını bir bankaya göndermemiz gerekti. Bu işlemi FTP(File Transfer Protocol) ile gerçekleştirdik. FTP(File Transfer Protocol) internete bağlı iki sunucu arasında dosya transferini sağlayan bir protokoldür ve kullanılan ilk internet protokollerinden biridir.

FTP dosya upload işlemini FtpWebRequest sınıfı ile kolayca halledebiliriz. FtpWebRequest sınıfı System.Net namespace’inde yeralmaktadır. Bağlantı kurmak istediğimiz sunucunun adresini, bankadan alınan kullanıcı adı ve şifreyi kullanarak bu kullanıcıya izin verilen dizine bağlantı sağlanıp dosya okuma ve yazma işlemleri yapılabilmektedir.

Aşağıda verilmiş olan C# kodu ile yazılmış fonksiyon içerisine, upload etmek istediğimiz dosyanın bulunduğu dizini göndererek ftp ile dosya gönderimini gerçekleştirebiliriz.

    public void ftp_send_file(string fileroot)
 {
        FileInfo fileInf = new FileInfo(fileroot);
        string uri = “ftp://ftp.jobsbank.com//” + fileInf.Name;
       
        FtpWebRequest reqFTP;
       
        reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
        reqFTP.Credentials = new NetworkCredential(“username”, “password”);
        reqFTP.KeepAlive = false;
        reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
        reqFTP.UseBinary = true;
        reqFTP.ContentLength = fileInf.Length;
        int buffLength = 2048;
        byte[] buff = new byte[buffLength];
        int contentLen;
        FileStream fs = fileInf.OpenRead();
 
    try
    { 
           Stream strm = reqFTP.GetRequestStream();
           contentLen = fs.Read(buff, 0, buffLength);
       
           while (contentLen != 0)
           {
                strm.Write(buff, 0, contentLen);
                contentLen = fs.Read(buff, 0, buffLength);
           }
            strm.Close();
     }
     catch(Exception ex)
     {
       throw new Exception(ex.ToString());
     }
             
           fs.Close();
          
 }