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= new FileInfo(“DosyaAdresi”); |
02 | string adres= "domain veya server ipsi" ; |
03 | string path = adres + filei.Name; |
05 | FTP = (FtpWebRequest)FtpWebRequest.Create( new path(path)); |
06 | FTP.Credentials = new NetworkCredential( "kullanıcıadı" , "Şifre" ); |
08 | FTP.Method = WebRequestMethods.Ftp.UploadFile; |
10 | FTP.ContentLength = filei.Length; |
12 | byte [] buff = new byte [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 = new StringBuilder(); |
05 | {FTP = (FtpWebRequest)FtpWebRequest.Create( new Uri(serveripsi veya domain)); |
07 | FTP.Credentials = new NetworkCredential( "kullanıcı adı " , "şifre" ); |
08 | FTP.Method = WebRequestMethods.Ftp.ListDirectory; |
09 | WebResponse response = FTP.GetResponse(); |
10 | StreamReader reader = new StreamReader(response.GetResponseStream()); |
11 | string line = 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 ( int sayac = 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 = new FileStream( "C:\\" + "Dosyaismi" ,FileMode.Create); |
06 | FTP = (FtpWebRequest)FtpWebRequest.Create( new Uri( "serveripsiveya domain/" + “Dosyaismi”); |
07 | FTP.Credentials = new NetworkCredential( "kullanıcıadı" , "Şifre" ); |
08 | FTP.Method =WebRequestMethods.Ftp.DownloadFile; |
10 | FtpWebResponse response = (FtpWebResponse)FTP.GetResponse(); |
11 | Stream ftpStream = response.GetResponseStream(); |
12 | long cl = response.ContentLength; |
15 | byte [] buffer = new byte [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( new Uri("serveripveya domain/+“Dosyaismi”); |
06 | FTP.Credentials = new NetworkCredential( "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( new Uri( "serveripsi veya domain/" + “Silinecekklasörismi” + "/" )); |
05 | FTP.UseBinary = true ;FTP.Credentials = new NetworkCredential( "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( new Uri( "serveripsi veya domain/" + “Yeniklasörismi” +“/”)); |
06 | FTP.Credentials = new NetworkCredential( "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( new Uri("serveripsi veya domain/+“Dosyaismi”); |
06 | string yeniisim= "dosyaismi" ; |
07 | FTP.RenameTo = yeniisim; |
08 | FTP.Credentials = new NetworkCredential( "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