Ana Sayfa >> C#.Net >> FTP ile Dosya ve Klasör İşlemleri – 1
Kategoriler
 ASP.Net
 C#.Net
 VB.Net
 SQL Server
 SQL Script
 Eğlence
 Haberler
 Görsel Ders
 Ücretsiz Programlar
 Diğer

Dost Siteler
 Volkan KORKMAZ
 Sem GÖKSU
 Mustafa Altuntaşlar
 Adnan TÜRK
 Ergün YÜCEL
 Koray KOCABAŞ
 Yazılım Uzmanı
 Yaz Geliştir
 Yazılım Günlüğü
 Code Project

Takvim
<Temmuz 2010>
PztSalÇarPerCumCmtPaz
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

Hakkımda
Windows Live Alerts
 E-Posta
 Msn ( )
 Skype


Login with Facebook
 
 FTP ile Dosya ve Klasör İşlemleri – 1

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.

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.

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…

Gökhan BAĞCI
Microsoft Certified Professional

Eklenme Tarihi: 07.12.2007 09:59:00

İlişkili Makaleler
 FTP ile Dosya ve Klasör İşlemleri – 2

Yorum Yaz
Gönderen
Başlık
Yorum


Yorumlar
teşekkürler
gerçekten işime yarayacak çok güzel bir makale elinizde server ile ilgili de bir döküman var mı?
Yazan: mehmet , Tarih: 28.12.2007

FTP ile Dosya Gönderme kısmı localde çalışıyor ama webten çalışmıyor nedir bu olay gökhan...? FI.OpenRead(); da hata veriyor
Yazan: [Misafir] , Tarih: 17.07.2008




2006-2008 © Gökhan BAĞCI
Tüm hakları saklıdır.