Microsoftun bize hazır sundugu sınıflardan biri olan FtpWebRequest Class'ı  ile işlemlerimizi rahatlıkla yerine getirebiliyoruz. FtpWebRequest class'ımız System.Net  namespace'i altında bulunmaktadır. aşağıda gösterdigimiz kodları uygularken import etmeyi unutmayın. Bu sınıfımızın haricinde System.IO'yada ihtiyacımız olucak.
FTP ile Dosya Gönderme
| 01 | FileInfo filei= newFileInfo(“DosyaAdresi”); | 
| 02 | stringadres="domain veya server ipsi"; | 
| 03 | stringpath = adres + filei.Name; | 
| 05 | FTP = (FtpWebRequest)FtpWebRequest.Create(newpath(path)); | 
| 06 | FTP.Credentials = newNetworkCredential("kullanıcıadı", "Şifre"); | 
| 08 | FTP.Method = WebRequestMethods.Ftp.UploadFile; | 
| 10 | FTP.ContentLength = filei.Length; | 
| 12 | byte[] buff = newbyte[buffLength]; | 
| 14 | FileStream FS = filei.OpenRead(); | 
| 16 | {Stream strm = FTP.GetRequestStream();contentLen = FS.Read(buff, 0, buffLength);while(contentLen != 0) | 
| 17 | {strm.Write(buff, 0, contentLen);contentLen = FS.Read(buff, 0, buffLength); | 
| 20 | FS.Close();Console.WriteLine("Başarılı"); | 
| 23 | Console.WriteLine(ex.Message); | 
İşlemimizde öncelikle upload edicegimiz dosya yolunu alıyoruz daha sonra göndermek istedigimiz ftp deki yolunu belirliyoruz.sınıfımızı tanıplayıp ftp mizin kullanıcı adı şifresini,uygulayacağımız işlemin metodunu,veriyi gönderme türünü,dosya boyutunu ve son olarak buffer boyutunu belirtiyoruz.buffer dediğimiz olay anlık olarak gönderilcek  veri boyutudur.en sonda gönderme işlemini gerçekleştirip işlemimizi bitiriyoruz. Dikkat edersinizki try catch içine aldıgımız blok bu işlemi yapıyor. bi sorun olmazsa başarılı, olursada ekrana neden başarısız olduguyla ilgili hata mesajını ekrana yazdırıyor.
FTP ile Dosyaları Listelemek
| 02 | StringBuilder result = newStringBuilder(); | 
| 05 | {FTP = (FtpWebRequest)FtpWebRequest.Create(newUri(serveripsi veya domain)); | 
| 07 | FTP.Credentials = newNetworkCredential("kullanıcı adı ", "şifre"); | 
| 08 | FTP.Method = WebRequestMethods.Ftp.ListDirectory; | 
| 09 | WebResponse response = FTP.GetResponse(); | 
| 10 | StreamReader reader = newStreamReader(response.GetResponseStream()); | 
| 11 | stringline = reader.ReadLine();while(line != null) | 
| 15 | line = reader.ReadLine(); | 
| 17 | result.Remove(result.ToString().LastIndexOf('\n'), 1); | 
| 19 | response.Close();Dosyalar=result.ToString().Split('\n');for(intsayac = 0; sayac < downloadFiles.Length; x++) | 
| 21 | Console.WriteLine(Dosyalar[sayac].ToString)); | 
| 25 | Console.WriteLine(ex.Message); | 
burdada görüldüğü gibi bir önceki kodlarımızla karşılaştırdığımızda farklılıklar dikkatinizi çekicektir. öncelikle methodumuz değişti.Ftpmize istek gönderiyoruz,cevap alıyoruz,stream reader yardımıyla okutuyoruz ve satır satır yazdırma işlemimizi gerçekleştiriyoruz.
Ftp ile Dosya indirme
| 05 | FileStream SR = newFileStream("C:\\"+ "Dosyaismi",FileMode.Create); | 
| 06 | FTP = (FtpWebRequest)FtpWebRequest.Create(newUri("serveripsiveya domain/"+ “Dosyaismi”); | 
| 07 | FTP.Credentials =newNetworkCredential("kullanıcıadı", "Şifre"); | 
| 08 | FTP.Method =WebRequestMethods.Ftp.DownloadFile; | 
| 10 | FtpWebResponse response = (FtpWebResponse)FTP.GetResponse(); | 
| 11 | Stream ftpStream = response.GetResponseStream(); | 
| 12 | longcl = response.ContentLength; | 
| 15 | byte[] buffer = newbyte[bufferSize]; | 
| 16 | readCount = ftpStream.Read(buffer, 0, bufferSize); | 
| 19 | SR.Write(buffer, 0, readCount); | 
| 20 | readCount = ftpStream.Read(buffer, 0, bufferSize); | 
| 25 | Console.WriteLine("başarılı");} | 
| 27 | {Console.WriteLine(ex.message);} | 
bilgisayarımıza nereye indircegimizin dosya yolunu giriyoruz. ftpden indirmek istediğimiz dosya yolunu yazıyoruz. bağlantı bilgilerimizi veriyoruz. metodumuzu WebRequestMethods.Ftp.DownloadFile  olarak değiştiriyoruz. response'umuzu webresponse türüne dönüştürüyoruz buffer bilglerimizide girip işlemi başlatıyoruz.
FTP ile Dosya Silme
| 04 | FTP = (FtpWebRequest)FtpWebRequest.Create(newUri("serveripveya domain/+“Dosyaismi”); | 
| 06 | FTP.Credentials =newNetworkCredential("kullanıcıadı", "Şifre"); | 
| 07 | FTP.Method =WebRequestMethods.Ftp.DeleteFile; | 
| 08 | FtpWebResponse response = (FtpWebResponse)FTP.GetResponse(); | 
| 09 | Console.WriteLine(response.StatusDescription); | 
| 13 | Console.WriteLine(ex.Message); | 
yukarda digerlerinde olmayan bir komut gördünüz.  "response.StatusDescription"  adındanda anlaşılağı üzere isteğimize karşılık gelen cevapta durumundan haberdar oluyoruz. başarılımı değil mi şeklinde.
FTP ile Klasör Silme
| 04 | FTP = (FtpWebRequest)FtpWebRequest.Create(newUri("serveripsi veya domain/"+ “Silinecekklasörismi” +"/")); | 
| 05 | FTP.UseBinary =true;FTP.Credentials =newNetworkCredential("kullanıcıadı", "Şifre"); | 
| 06 | FTP.Method =WebRequestMethods.Ftp.RemoveDirectory; | 
| 07 | FtpWebResponse response = (FtpWebResponse)FTP.GetResponse(); | 
| 08 | Console.WriteLine(response.StatusDescription); | 
| 12 | Console.WriteLine(ex.Message); | 
FTP ile Klasör Oluşturma
| 04 | FTP = (FtpWebRequest)FtpWebRequest.Create(newUri("serveripsi veya domain/"+ “Yeniklasörismi” +“/”)); | 
| 06 | FTP.Credentials =newNetworkCredential("kullanıcıadı", "Şifre"); | 
| 07 | FTP.Method =WebRequestMethods.Ftp.MakeDirectory; | 
| 08 | FtpWebResponse response = (FtpWebResponse)FTP.GetResponse(); | 
| 09 | Console.WriteLine(response.StatusDescription); | 
| 13 | Console.WriteLine(ex.Message); | 
FTP ile Dosya Adı Değiştirme
| 04 | FTP = (FtpWebRequest)FtpWebRequest.Create(newUri("serveripsi veya domain/+“Dosyaismi”); | 
| 06 | stringyeniisim="dosyaismi"; | 
| 07 | FTP.RenameTo = yeniisim; | 
| 08 | FTP.Credentials = newNetworkCredential("kullanıcıadı", "Şifre"); | 
| 09 | FTP.Method = WebRequestMethods.Ftp.Rename; | 
| 10 | FtpWebResponse response = (FtpWebResponse)FTP.GetResponse(); | 
| 11 | Console.WriteLine(response.StatusDescription); | 
| 15 | Console.WriteLine(ex.Message); | 
işlemlerimiz bukadar.Gördügünüz gibi çogunda bir değişiklik yok sadece methodu değiştirmemiz işlemimizin gidişatını değiştiriyor. Bunun haricinde FTPlib olarak geçen FTP Client Library  sınıfınında oldukça kullanışlı olduğunu söleyebilirim. Okuduğunuz için
 
0 yorum:
Yorum Gönder