Ana sayfa › Forumlar › PROGRAMLAMA › C# › C# Ile FTP Üzerinde Dosya Ve Klasör İşlemleri
- Bu konu 0 yanıt içerir, 1 izleyen vardır ve en son 12 yıl 8 ay önce özgür tarafından güncellenmiştir.
-
YazarYazılar
-
14 Nisan 2012: 14:40 #12234özgürİzleyici
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;
04 FtpWebRequest FTP;
05 FTP = (FtpWebRequest)FtpWebRequest.Create(new path(path));
06 http://FTP.Credentials = new NetworkCredential(“kullanıcıadı”, “Şifre”);
07 http://FTP.KeepAlive = false;
08 http://FTP.Method = WebRequestMethods.Ftp.UploadFile;
09 http://FTP.UseBinary = true;
10 http://FTP.ContentLength = filei.Length;
11 int buffLength = 1024;
12 byte[] buff = new byte[buffLength];
13 int contentLen;
14 FileStream FS = filei.OpenRead();
15 try
16 {Stream strm = http://FTP.GetRequestStream();contentLen = FS.Read(buff, 0, buffLength);while (contentLen != 0)
17 {strm.Write(buff, 0, contentLen);contentLen = FS.Read(buff, 0, buffLength);
18 }
19 strm.Close();
20 FS.Close();Console.WriteLine(“Başarılı”);
21 }catch (Exception ex)
22 {
23 Console.WriteLine(ex.Message);
24 }İş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
01 string[] Dosyalar;
02 StringBuilder result = new StringBuilder();
03 FtpWebRequest FTP;
04 try
05 {FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(serveripsi veya domain));
06 http://FTP.UseBinary = true;
07 http://FTP.Credentials = new NetworkCredential(“kullanıcı adı “, “şifre”);
08 http://FTP.Method = WebRequestMethods.Ftp.ListDirectory;
09 WebResponse response = http://FTP.GetResponse();
10 StreamReader reader = new StreamReader(response.GetResponseStream());
11 string line = reader.ReadLine();while (line != null)
12 {
13 result.Append(line);
14 result.Append(“n”);
15 line = reader.ReadLine();
16 }
17 result.Remove(result.ToString().LastIndexOf(‘n’), 1);
18 reader.Close();
19 response.Close();Dosyalar=result.ToString().Split(‘n’);for (int sayac = 0; sayac < downloadFiles.Length; x++) 20 { 21 Console.WriteLine(Dosyalar[sayac].ToString)); 22 } 23 }catch (Exception ex) 24 { 25 Console.WriteLine(ex.Message); 26 } 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 01 FtpWebRequest 02 FTP; 03 try 04 { 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; 09 FTP.UseBinary =true; 10 FtpWebResponse response = (FtpWebResponse)FTP.GetResponse(); 11 Stream ftpStream = response.GetResponseStream(); 12 long cl = response.ContentLength; 13 int bufferSize = 1024; 14 int readCount; 15 byte[] buffer = new byte[bufferSize]; 16 readCount = ftpStream.Read(buffer, 0, bufferSize); 17 while (readCount > 0)
18 {
19 SR.Write(buffer, 0, readCount);
20 readCount = ftpStream.Read(buffer, 0, bufferSize);
21 }
22 ftpStream.Close();
23 SR.Close();
24 response.Close();
25 Console.WriteLine(“başarılı”);}
26 catch (Exception ex)
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
01 FtpWebRequest FTP;
02 try
03 {
04 FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(“serveripveya domain/+?Dosyaismi?);
05 http://FTP.UseBinary =true;
06 http://FTP.Credentials =new NetworkCredential(“kullanıcıadı”, “Şifre”);
07 http://FTP.Method =WebRequestMethods.Ftp.DeleteFile;
08 FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
09 Console.WriteLine(response.StatusDescription);
10 }
11 catch (Exception ex)
12 {
13 Console.WriteLine(ex.Message);
14 }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
01 FtpWebRequest FTP;
02 try
03 {
04 FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(“serveripsi veya domain/”+ ?Silinecekklasörismi? +”/”));
05 http://FTP.UseBinary =true;FTP.Credentials =new NetworkCredential(“kullanıcıadı”, “Şifre”);
06 http://FTP.Method =WebRequestMethods.Ftp.RemoveDirectory;
07 FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
08 Console.WriteLine(response.StatusDescription);
09 }
10 catch (Exception ex)
11 {
12 Console.WriteLine(ex.Message);
13 }FTP ile Klasör Oluşturma
01 FtpWebRequest FTP;
02 try
03 {
04 FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(“serveripsi veya domain/”+ ?Yeniklasörismi? +?/?));
05 http://FTP.UseBinary =true;
06 http://FTP.Credentials =new NetworkCredential(“kullanıcıadı”, “Şifre”);
07 http://FTP.Method =WebRequestMethods.Ftp.MakeDirectory;
08 FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
09 Console.WriteLine(response.StatusDescription);
10 }
11 catch (Exception ex)
12 {
13 Console.WriteLine(ex.Message);
14 }FTP ile Dosya Adı Değiştirme
01 FtpWebRequest FTP;
02 try
03 {
04 FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(“serveripsi veya domain/+?Dosyaismi?);
05 http://FTP.UseBinary = true;
06 string yeniisim=”dosyaismi”;
07 http://FTP.RenameTo = yeniisim;
08 http://FTP.Credentials = new NetworkCredential(“kullanıcıadı”, “Şifre”);
09 http://FTP.Method = WebRequestMethods.Ftp.Rename;
10 FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
11 Console.WriteLine(response.StatusDescription);
12 }
13 catch (Exception ex)
14 {
15 Console.WriteLine(ex.Message);
16 }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 teşekkürler .
-
YazarYazılar
- Bu konuyu yanıtlamak için giriş yapmış olmalısınız.