FTP
FTP (File Transfer Protocol) Internete bağlı bir bilgisayardan diğerine (her iki yönde de) dosya aktarımı yapmak için geliştirilen bir internet protokolü ve bu işi yapan uygulama programlarına verilen genel addır. İlk geliştirilen internet protokollerinden biridir. FTP protokolü ile bir başka bilgisayardan bir başka bilgisayara dosya aktarımı yapılırken, o bilgisayar ile etkileşimli-aynı anda (on-line) bağlantı kurulur ve protokol ile sağlanan bir dizi komutlar yardımıyla iki bilgisayar arasında dosya alma/gönderme işlemleri yapılır.
Bir web projesi yada web sitesi yaptığı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 bağlanır ilgili dosyaları ftp alanına transfer ederiz.
FTP kullanımı sadece bununla da sınırlı değildir elbette. Örneğin kendi sistemimiz üzerinden (bu bir winform uygulaması olabilir) web sitemize içerik girmemiz gerektiğinde ilgili içeriğe bir dosya eklemek istediğimizde işimizi çok kolaylaştıracak bir yöntemdir.
.Net Framework da bu işi FtpWebRequest classı ile yaparız. Şimdi kısaca bu classı tanıyalım.
FtpWebRequest
Framework 2.0 içersinde FTP ile çalışmamızı sağlayan 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 bağlanarak bir dosya indirebilir yada sunucuya bir dosya yükleyebiliriz.
ÖRNEK
Biz bu uygulamamızda kendi uygulamamız üzerinden bir ftp’ye bağlanıp FTP’ye bir dosya upload edip yine FTP’en kendi makinemize bir dosya download edeceğiz.
İlk olarak yeni bir windows projesi oluşturalım;
Formumuz üzerine 2 buton ekleyelim. İlk butona bastığımızda upload işlemini gerçekleştirecek. Diğer butonda FTP’den dosya indirmemizi sağlayacak. Benim hazırlamış olduğum form aşağıdaki gibidir.
İlk olarak FTP’ye bağlanarak bir dosya indirelim. Bunun için gerekli kodları yazmaya başlayalım;
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.xxxxxx.com/xxx/sem.swf"
;
//Sunucu ile haberleşecek bir FtpWebRequest objesi yarattık. Şimdi bu obje için login olmak için gerekli bilgilerini oluşturalı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 işlemini tamamladık. Şimdi 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 indireceğimiz dosyayı belirtiyoruz…
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential("xxxxx ", " xxxxx "
;
// Login olmak için gerekli bilgilerini oluşturalı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 işlemimiz de bu kadar. Şimdi bu yaptıklarımızı test edelim İlk Olarak Yükle butonuna tıklayalım;
FTP’ye bağlanalım, bakalım upload işlemini gerçekleştirmişmi?
Evet Sem.jpg isimli dosya sunucu da artık J Şimdi 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 işe yarayacak bir class’mış J
Bu makalenin de sonuna geldik, başka bir makalede görüşmek üzere başarı ve iyi günler dilerim.