06 Haz 2007 Basit bir FTP Uygulaması Kategori: C#.NET Etiketler: C#C# 2.0 7 Yorum Uzun bir aradan sonra tekrardan merhaba arkadaşlar :) Bu makalemizde özellikle web uygulamaları geliştirenlerin işine yarayacak c# ile basitçe bir FTP Client programının nasıl geliştirildiğini anlatacağım. FTP FTP (File Transfer Protocol) Internete baglı bir bilgisayardan digerine (her iki yönde de) dosya aktarımı yapmak için gelistirilen bir internet protokolü ve bu isi yapan uygulama programlarına verilen genel addır. Ilk gelistirilen internet protokollerinden biridir. FTP protokolü ile bir baska bilgisayardan bir baska bilgisayara dosya aktarımı yapılırken, o bilgisayar ile etkilesimli-aynı anda (on-line) baglantı kurulur ve protokol ile saglanan bir dizi komutlar yardımıyla iki bilgisayar arasında dosya alma/gönderme islemleri yapılır. Bir web projesi yada web sitesi yaptıgımızda bunu yayınlamak için bir FTP programına ihtiyaç duyarız. Bunu nasıl yaparız? FTP programını açar, ftp bilgilerimiz ile ftp'ye baglanır ilgili dosyaları ftp alanına transfer ederiz.FTP kullanımı sadece bununla da sınırlı degildir elbette. Örnegin kendi sistemimiz üzerinden (bu bir winform uygulaması olabilir) web sitemize içerik girmemiz gerektiginde ilgili içerige bir dosya eklemek istedigimizde isimizi çok kolaylastıracak bir yöntemdir. .Net Framework da bu isi FtpWebRequest classı ile yaparız. Simdi kısaca bu classı tanıyalım.FtpWebRequestFramework 2.0 içersinde FTP ile çalısmamızı saglayan yeni bir class eklendi. Bu classın adı FtpWebRequest. Bu class System.net namespace'si altında bulunmaktadır. Webclient sınıfını kullanarak uzaktaki bir sunucudan FTP'ye baglanarak bir dosya indirebilir yada sunucuya bir dosya yükleyebiliriz. ÖRNEKBiz bu uygulamamızda kendi uygulamamız üzerinden bir ftp'ye baglanıp FTP'ye bir dosya upload edip yine FTP'en kendi makinemize bir dosya download edecegiz.Ilk olarak yeni bir windows projesi olusturalım;Formumuz üzerine 2 buton ekleyelim. Ilk butona bastıgımızda upload islemini gerçeklestirecek. Diger butonda FTP'den dosya indirmemizi saglayacak. Benim hazırlamıs oldugum form asagıdaki gibidir.Ilk olarak FTP'ye baglanarak bir dosya indirelim. Bunun için gerekli kodları yazmaya baslayalım; FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.xxxxxx.com/xxx/sem.swf"); //Sunucu ile haberlesecek bir FtpWebRequest objesi yarattık. Simdi bu obje için login olmak için gerekli bilgilerini olusturalım.request.Credentials = new NetworkCredential("xxxxx", "xxxxx");using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()){Stream data = response.GetResponseStream();string targetPath = "C:/sem.swf";//Local makinedeki dosyanın tam yolunu belirtelimif (File.Exists(targetPath)) // Dosya varsa sil.File.Delete(targetPath);byte[] byteBuffer = new byte[4096];// Dosyayı loacal makinemize aktarıyoruzusing (FileStream output = new FileStream(targetPath, FileMode.CreateNew)){int bytesRead = 0;do{bytesRead = data.Read(byteBuffer, 0, byteBuffer.Length);if (bytesRead > 0){output.Write(byteBuffer, 0, bytesRead);}}while (bytesRead > 0);}}FTP'den dosyayı indirme islemini tamamladık. Simdi de sunucuya bir dosya yükleyelim. Bunun için gerekli kodlar; FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www. xxxxxx.com/xx/sem.jpg"); // FTP'den indirecegimiz dosyayı belirtiyoruz.request.Method = WebRequestMethods.Ftp.UploadFile;request.Credentials = new NetworkCredential("xxxxx ", " xxxxx ");// Login olmak için gerekli bilgilerini olusturalım.StreamReader sourceStream = new StreamReader("c:/sem.jpg");byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());sourceStream.Close();request.ContentLength = fileContents.Length;Stream requestStream = request.GetRequestStream();requestStream.Write(fileContents, 0, fileContents.Length);requestStream.Close();Upload islemimiz de bu kadar. Simdi bu yaptıklarımızı test edelim ;) Ilk Olarak Yükle butonuna tıklayalım;FTP'ye baglanalım, bakalım upload islemini gerçeklestirmismi?Evet Sem.jpg isimli dosya sunucu da artık J Simdi hemen altındaki sem.swf isimli dosyayı Bilgisayarımıza indirelim. Bunun için indir butonuna tıklayalım.Sonucu görmek için C: sürücüsüne bakalım;Evet sem.swf'yi bilgisayarımıza indirdik. Gerçekten güzel ve ise yarayacak bir class'mıs JBu makalenin de sonuna geldik, baska bir makalede görüsmek üzere basarı ve iyi günler dilerim. Sem GÖKSUMCP | MCAD.NET | MCTS Örnek Kodlar için mail adresimi kullanabilirsiniz sem.goksu@yazilimgunlugu.comwww.yazilimgunlugu.comKaynaklar http://msdn.com Yorum (7) Dogacan DOGANER / 7.1.2009 02:49:43 Çok güzel semi abicim , eline saglik Bahattin UZUN / 21.1.2009 18:16:46 ellerine saglik sabahtan beri ariyorum bunu en iyi sen anlatmissin sagolasin. Cengiz Atilla / 25.3.2009 05:36:23 Hocam elinize sağlık gerçekden ne zamandır aradıgım bir uygulama olmuş bunu masaustu programdan web gonder exe yapmıstım resimlerimi veya diger dosyalarımı bu sekilde yukleyip tekrar sunucudan alabilirim . Başarılı Olmuş Elinize sağlık Utku Utkan / 30.6.2009 11:09:39 Gerçekten faydalı bir örnek olmuş. Benim sorum bu uygulamayı http proxy arkasındaki bir client üzerinden çalıştırmanın yolu var mı ? Ben denediğimde "This FTP command is not supported when using HTTP Proxy" şeklinde hata alıyorum. (request nesnesinin Proxy özelliğine atama da yaptım) Teşekkürler. Murat YUKSEL / 24.7.2009 23:28:01 sem fenerli oldugun her halınden belli:)) Sem Göksu / 6.8.2009 21:54:58 @Murat => Övünmek gibi olmasın ama her yerde söylerim... Fenerliyim ! yusuf / 4.9.2018 21:06:36 merhaba bilgi paylaşımınız için tşk ederim ama ben birşey s veri çekiyorum bilgisayara ben o klasörün içinde en son yedekledigim dosyayı ftp göndermek istiyorum ve bu birden fazla data yani minimum 3 data yedekliyorum ftp kodlarını bulamadım birtürlü Yorum Yaz * Ad Soyad: * Email: * Message:
Yorum (7) Dogacan DOGANER / 7.1.2009 02:49:43 Çok güzel semi abicim , eline saglik Bahattin UZUN / 21.1.2009 18:16:46 ellerine saglik sabahtan beri ariyorum bunu en iyi sen anlatmissin sagolasin. Cengiz Atilla / 25.3.2009 05:36:23 Hocam elinize sağlık gerçekden ne zamandır aradıgım bir uygulama olmuş bunu masaustu programdan web gonder exe yapmıstım resimlerimi veya diger dosyalarımı bu sekilde yukleyip tekrar sunucudan alabilirim . Başarılı Olmuş Elinize sağlık Utku Utkan / 30.6.2009 11:09:39 Gerçekten faydalı bir örnek olmuş. Benim sorum bu uygulamayı http proxy arkasındaki bir client üzerinden çalıştırmanın yolu var mı ? Ben denediğimde "This FTP command is not supported when using HTTP Proxy" şeklinde hata alıyorum. (request nesnesinin Proxy özelliğine atama da yaptım) Teşekkürler. Murat YUKSEL / 24.7.2009 23:28:01 sem fenerli oldugun her halınden belli:)) Sem Göksu / 6.8.2009 21:54:58 @Murat => Övünmek gibi olmasın ama her yerde söylerim... Fenerliyim ! yusuf / 4.9.2018 21:06:36 merhaba bilgi paylaşımınız için tşk ederim ama ben birşey s veri çekiyorum bilgisayara ben o klasörün içinde en son yedekledigim dosyayı ftp göndermek istiyorum ve bu birden fazla data yani minimum 3 data yedekliyorum ftp kodlarını bulamadım birtürlü
Bahattin UZUN / 21.1.2009 18:16:46 ellerine saglik sabahtan beri ariyorum bunu en iyi sen anlatmissin sagolasin.
Cengiz Atilla / 25.3.2009 05:36:23 Hocam elinize sağlık gerçekden ne zamandır aradıgım bir uygulama olmuş bunu masaustu programdan web gonder exe yapmıstım resimlerimi veya diger dosyalarımı bu sekilde yukleyip tekrar sunucudan alabilirim . Başarılı Olmuş Elinize sağlık
Utku Utkan / 30.6.2009 11:09:39 Gerçekten faydalı bir örnek olmuş. Benim sorum bu uygulamayı http proxy arkasındaki bir client üzerinden çalıştırmanın yolu var mı ? Ben denediğimde "This FTP command is not supported when using HTTP Proxy" şeklinde hata alıyorum. (request nesnesinin Proxy özelliğine atama da yaptım) Teşekkürler.
yusuf / 4.9.2018 21:06:36 merhaba bilgi paylaşımınız için tşk ederim ama ben birşey s veri çekiyorum bilgisayara ben o klasörün içinde en son yedekledigim dosyayı ftp göndermek istiyorum ve bu birden fazla data yani minimum 3 data yedekliyorum ftp kodlarını bulamadım birtürlü