C# ile FTP Üzerinde Dosya ve Klasör İşlemleri

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

FileInfo filei= new FileInfo(“DosyaAdresi”);
string adres="domain veya server ipsi";
string path = adres + filei.Name;
FtpWebRequest FTP;
FTP = (FtpWebRequest)FtpWebRequest.Create(new path(path));
FTP.Credentials = new NetworkCredential("kullanıcıadı", "Şifre");
FTP.KeepAlive = false;
FTP.Method = WebRequestMethods.Ftp.UploadFile;
FTP.UseBinary = true;
FTP.ContentLength = filei.Length;
int buffLength = 1024;
byte[] buff = new byte[buffLength];
int contentLen;
FileStream FS = filei.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();Console.WriteLine("Başarılı");
}catch (Exception ex)
{
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

string[] Dosyalar;
StringBuilder result = new StringBuilder();
FtpWebRequest FTP;
try
{FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(serveripsi veya domain));
FTP.UseBinary = true;
FTP.Credentials = new NetworkCredential("kullanıcı adı ", "şifre");
FTP.Method = WebRequestMethods.Ftp.ListDirectory;
WebResponse response = FTP.GetResponse();
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();Dosyalar=result.ToString().Split('\n');for (int sayac = 0; sayac < downloadFiles.Length; x++) 
{
Console.WriteLine(Dosyalar[sayac].ToString));
}
}catch (Exception ex)
{
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

FtpWebRequest
FTP;
try
{
FileStream SR = new FileStream("C:\\" + "Dosyaismi",FileMode.Create);
FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("serveripsiveya domain/"+ “Dosyaismi”);
FTP.Credentials =new NetworkCredential("kullanıcıadı", "Şifre");
FTP.Method =WebRequestMethods.Ftp.DownloadFile;
FTP.UseBinary =true;
FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
Stream ftpStream = response.GetResponseStream();
long cl = response.ContentLength;
int bufferSize = 1024;
int readCount;
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();
Console.WriteLine("başarılı");}
catch (Exception ex)
{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

FtpWebRequest FTP;
try
{
FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("serveripveya domain/+“Dosyaismi”);
FTP.UseBinary =true;
FTP.Credentials =new NetworkCredential("kullanıcıadı", "Şifre");
FTP.Method =WebRequestMethods.Ftp.DeleteFile;
FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
Console.WriteLine(response.StatusDescription);
}
catch (Exception ex)
{
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

FtpWebRequest FTP;
try
{
FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("serveripsi veya domain/"+ “Silinecekklasörismi” +"/"));
FTP.UseBinary =true;FTP.Credentials =new NetworkCredential("kullanıcıadı", "Şifre");
FTP.Method =WebRequestMethods.Ftp.RemoveDirectory;
FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
Console.WriteLine(response.StatusDescription);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}

FTP ile Klasör Oluşturma

FtpWebRequest FTP;
try
{
FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("serveripsi veya domain/"+ “Yeniklasörismi” +“/”));
FTP.UseBinary =true;
FTP.Credentials =new NetworkCredential("kullanıcıadı", "Şifre");
FTP.Method =WebRequestMethods.Ftp.MakeDirectory;
FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
Console.WriteLine(response.StatusDescription);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}

FTP ile Dosya Adı Değiştirme

FtpWebRequest FTP;
try
{
FTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("serveripsi veya domain/+“Dosyaismi”);
FTP.UseBinary = true;
string yeniisim="dosyaismi";
FTP.RenameTo = yeniisim;
FTP.Credentials = new NetworkCredential("kullanıcıadı", "Şifre");
FTP.Method = WebRequestMethods.Ftp.Rename;
FtpWebResponse response = (FtpWebResponse)FTP.GetResponse();
Console.WriteLine(response.StatusDescription);
}
catch (Exception ex)
{
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 teşekkürler .

Tarih:
Hit: 282333
Yazar: FCN



Yorumlar


Siftahı yapan siz olun
Yorum yapabilmek için üye girişi yapmalısınız.