Veysel Uğur KIZMAZ

C#'ta FTP ile Dosya Gönderme

16.06.2012Okunma Sayısı: 12594Kategori: C#.Net

Merhaba arkadaslar,

FTP, yani Dosya Transfer Protokolünü (File Transfer Protocol) kullanarak web C# uygulamamiz ile web sitemize dosya gönderme islemini gerçeklestirecegiz.

Öncelikle FTP ile ilgili bilgi vermek istiyorum. FTP, yani File Transfer Protocol, internet baglantisi olan iki bilgisayar arasinda dosya aktarimi yapilmasini saglayan bir protokoldür ve ilk kullanilan internet protokolleri arasindadir.

Dosya alisveris islemi sirasinda iki bilgisayar arasinda baglanti kurulur ve bu protokolün sagladigi komutlar sayesinde bilgisayarlar arasinda dosya alisverisi saglanir.

Bu protokol, günümüzde yaygin olarak web sayfalarinin yayinlanmasi için kullanilmaktadir. Bazi firmalar tarafindan yazilmis olan FTP yazilimlari sayesinde baglanmak istedigimiz sunucu adresini, kullanici adini ve sifresini yazarak sunucu içerisinde, bize izin verilen klasöre baglanti yapabiliyor, belirlenen sinirlar dogrultusunda dosya alma ve gönderme islemlerini yapabiliyoruz.

Dosya gönderme islemi için C# kodlari ve açiklamalari asagidadir.

     public string UploadFileToFtp(string dosyaAdi)

        {

            ftpServerIP = "ftp.ugurkizmaz.com";

            FileInfo dosyaBilgisi = new FileInfo(dosyaAdi);

            string uri = "ftp://" + ftpServerIP + "/" + dosyaBilgisi.Name;

            FtpWebRequest ftpIstegi;

 

            ftpIstegi = (FtpWebRequest)FtpWebRequest.Create(new Uri(

                      "ftp://" + ftpServerIP + "/" + dosyaBilgisi.Name));

 

            ftpIstegi.Credentials = new NetworkCredential("deneme@ugurkizmaz.com","123");

           
           
// Baglantiyi sürekli açik tutuyor.

            ftpIstegi.KeepAlive = false;

 

            // Yapilacak islem (Upload)

            ftpIstegi.Method = WebRequestMethods.Ftp.UploadFile;

 

            //Verinin gönderim sekli.

            ftpIstegi.UseBinary = true;

 

            //Sunucuya gönderilecek dosya uzunlugu bilgisi

            ftpIstegi.ContentLength = dosyaBilgisi.Length;

 

            // Buffer uzunlugu 2048 byte

            int bufferUzunlugu = 2048;

            byte[] buff = new byte[10000000];

            int sayi;

 

            FileStream stream = dosyaBilgisi.OpenRead();

 

            try

            {

                Stream str = ftpIstegi.GetRequestStream();

 

                sayi = stream.Read(buff, 0, bufferUzunlugu);

 

                while (sayi != 0)

                {

                    str.Write(buff, 0, sayi);

                    sayi = stream.Read(buff, 0, bufferUzunlugu);

                }

                return "";

 

                str.Close();

                stream.Close();

            }

            catch (Exception ex)

            {

                return ex.Message;

            }

        }

 

 

Veysel Ugur KIZMAZ