Jump to content

Ftp Ile Dosya Ve Klasör İşlemleri – 1


wmismail

Recommended Posts

Bu makalemizde FTP(File Transfer Protocol) işlemlerinden söz edeceğiz. Makalede bahsedeceğimiz bazı işlemlere örnek verecek olursak “Dosya Yükleme, Dosya İndirme, Dosya Silme, Klasör Silme, Dosya Listeleme” gibi konulara değineceğiz.

Öncelikle FTP’den biraz bahsedelim. FTP, File Transfer Protocol yani Türkçesi “Dosya Transfer Protokolü” dediğimiz ASCII, EBCDIC, ve Binary bir uç aygıttan diğerine iletim için kullanılır.

Öncelikle System.Net.FtpWebRequest sınıfından söz edelim. Makalemizde söz edeceğimiz tüm işlemleri bu sınıf üzerinden gerçekleştireceğiz ve System.IO ile dosya bilgilerini almak için bu sınıfı kullanacağız.

FtpWebRequest ‘in detaylı olarak Method ve Property ’lerinden bahsetmeyeceğim, örnekler içerisinde zaten her satırın açıklamalarını yapıyorum, sırasıyla hangi methodun ve özelliğin ne işe yaradığını görmüş olacağız!

FTP ile Dosya Gönderme

// Dosya bilgisini oluşturuyoruz, Dosya yolunu web için FileUplaod nesnesinden, win32 Applicationlar için OpenFileDialog nesnesinden alabilirsiniz.

FileInfo FI = new FileInfo(“DosyaYolu”);

// Dosyanın gönderileceği ftp yolunu belirliyoruz

string uri = "ftp://ServerIP-yada-FtpDomain/" + FI.Name;

// Ftp işlemlerini yapacağımız classımızı tanımlıyoruz

FtpWebRequest FTP;

// Oluşturduğumuz değişkene hedef yolumuzu eşitliyoruz

FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));

// Ftp bağlantısı için UserName ve Şifremizi belirtiyoruz

FTP.Credentials = new NetworkCredential("UserName", "Şifre");

// Default olarak true geliyor false 'a çeviriyoruz. Amacımız bağlantı açıksa hataya düşmemesi

FTP.KeepAlive = false;

// Bu kısımda hangi işlemi yapacağımızı belirtiyoruz, dosya göndereceğimiz için UploadFile methodunu seçiyoruz

FTP.Method = WebRequestMethods.Ftp.UploadFile;

// Dosya tranferinin Binary türden yapılacağını belirtiyoruz

FTP.UseBinary = true;

// Gönderdiğimiz dosyanın boyutunu belirtiyoruz

FTP.ContentLength = FI.Length;

// Buffer büyüklüğünü 2KB olarak belirtiyoruz ve değişkenimizi tanımlıoyruz

int buffLength = 2048;

byte[] buff = new byte[buffLength];

int contentLen;

// Bu kısımda dosyayı binary'e çevirip ftp'ye gönderiyoruz

FileStream FS = FI.OpenRead();

try

{

Stream strm = FTP.GetRequestStream();

contentLen = FS.Read(buff, 0, buffLength);

while (contentLen != 0)

{

strm.Write(buff, 0, contentLen);

contentLen = FS.Read(buff, 0, buffLength);

}

strm.Close();

FS.Close();

MessageBox.Show("Dosya Gönderildi!", "Hata");

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "Hata");

}

FTP ile Dosya İndirme

FtpWebRequest FTP;

try

{

// Kendi PC'mizde oluşturacağımız dosyanın yolunu tanımlıyoruz

FileStream SR = new FileStream("C:\\" + "DosyaAdi", FileMode.Create);

// Dosyanın alınacağı ftp yolunu belirliyoruz

FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://ServerIP-yada-FtpDomain/" + “DosyaAdı”);

// Ftp bağlantısı için UserName ve Şifremizi belirtiyoruz

FTP.Credentials = new NetworkCredential("UserName", "Şifre");

// Bu kısımda hangi işlemi yapacağımızı belirtiyoruz, dosya göndereceğimiz için UploadFile methodunu seçiyoruz

FTP.Method = WebRequestMethods.Ftp.DownloadFile;

// Dosya tranferinin Binary türden yapılacağını belirtiyoruz

FTP.UseBinary = true;

// Dosya transfer bilgilerini FtpWebResponse türüne çeviriyoruz

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

// Çevirdiğimiz bilgileri kendi PC'miz için dosya oluşturacak Stream'e eşitliyoruz

Stream ftpStream = response.GetResponseStream();

// Dosya boyutunu belirtiyoruz

long cl = response.ContentLength;

// Buffer büyüklüğünü 2KB olarak belirtiyoruz ve değişkenimizi tanımlıoyruz

int bufferSize = 2048;

int readCount;

// Bu kısımda dosyayı binary'e çevirip ftp'den çekiyoruz

byte[] buffer = new byte[bufferSize];

readCount = ftpStream.Read(buffer, 0, bufferSize);

while (readCount > 0)

{

SR.Write(buffer, 0, readCount);

readCount = ftpStream.Read(buffer, 0, bufferSize);

}

ftpStream.Close();

SR.Close();

response.Close();

MessageBox.Show("Dosya İndirildi!");

}

catch (Exception ex)

{

MessageBox.Show(ex.Message,"Hata");

}

FTP ile Dosya Listesi

string[] DosyaListesi;

StringBuilder result = new StringBuilder();

FtpWebRequest FTP;

try

{

// Dosyaların listeleneceği ftp yolunu belirliyoruz

FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftp://ServerIP-yada-FtpDomain/));

// Dosya tranferinin Binary türden yapılacağını belirtiyoruz

FTP.UseBinary = true;

// Ftp bağlantısı için UserName ve Şifremizi belirtiyoruz

FTP.Credentials = new NetworkCredential("ewlak_test", "asdasd");

// Bu kısımda hangi işlemi yapacağımızı belirtiyoruz

FTP.Method = WebRequestMethods.Ftp.ListDirectory;

// Dosya listesini alıyoruz

WebResponse response = FTP.GetResponse();

// Aldığımız listeyi StreamReader ile her satırını okuyup dosya isimlerini ayırıyoruz

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

string line = reader.ReadLine();

while (line != null)

{

result.Append(line);

result.Append("\n");

line = reader.ReadLine();

}

result.Remove(result.ToString().LastIndexOf('\n'), 1);

reader.Close();

response.Close();

DosyaListesi = result.ToString().Split('\n');

for (int x = 0; x < downloadFiles.Length; x++)

{

// ve son olarak istediğimiz bir nesneye ekliyoruz. Aşağıda örnek olarak ListBox!a eklenmiştir.

lbListe.Items.Add(DosyaListesi[x].ToString());

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "Hata");

}

Devamı “FTP ile Dosya ve Klasör İşlemleri – 2” makalemizde…

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...