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.
FtpWebRequest
Framework 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.
ÖRNEK
Biz 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 belirtelim if (File.Exists(targetPath)) // Dosya varsa sil. File.Delete(targetPath);
byte[] byteBuffer = new byte[4096];
// Dosyayı loacal makinemize aktarıyoruz
using (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 J
Bu makalenin de sonuna geldik, baska bir makalede görüsmek üzere basarı ve iyi günler dilerim.
Sem GÖKSU
MCP | MCAD.NET | MCTS
Örnek Kodlar için mail adresimi kullanabilirsiniz
sem.goksu@yazilimgunlugu.com
www.yazilimgunlugu.com
Kaynaklar
http://msdn.com