wmismail Posted August 10, 2008 Share Posted August 10, 2008 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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.