C# İle FTP’ye Bağlanma ve Dosya Transferi
Merhaba,
Proje çalışmalarınızda FTP(File Transfer Protocol) üzerinden çalışmalar gerçekleştirmeniz gerekebilir. İşte böyle bir ihtiyaca dönük nasıl hareket etmeniz gerektiğini teknik olarak bu içeriğimizde inceleyeceğiz. Tüm bunların yanında teorik olarak FTP’nin ne olduğu hakkında da bilgi vereceğiz.
FTP(File Transfer Protocol) Nedir
Bir protokoldür. Lakin sadece bir protokol değil adı üzerinde internet üzerinden dosya transfer işlemleri için kullanılan bir işlevselliğe sahiptir. Güvenlik açısından pekte tercih edilebilir değildir. Anlayacağınız yapacağınız işlem güven arz ediyorsa pekte önerilmemektedir. Ayrıca varsayılan olarak 21 numaralı portu kullanmaktadır.
Peki nasıl C# ile bu protokolü kullanarak internet üzerinden dosya transferi sağlanabilir? sorusuna gelirsek eğer aşağıdaki sınıfı kullanabilirsiniz.
class FTPIslemleri
{
public static Task UploadFtpFile(string Server, string KlasorAdi, string DosyaAdi, string KullaniciAdi, string Sifre)
{
return Task.Run(() =>
{
FtpWebRequest request = null;
try
{
string SadeDosyaAdi = Path.GetFileName(DosyaAdi);
request = WebRequest.Create(new Uri($@"ftp://{Server}/{KlasorAdi}/{SadeDosyaAdi}")) as FtpWebRequest;
request.Method = WebRequestMethods.Ftp.UploadFile;
request.UseBinary = true;
request.UsePassive = true;
request.KeepAlive = true;
request.Credentials = new NetworkCredential(KullaniciAdi, Sifre);
request.ConnectionGroupName = "group";
using (FileStream fs = File.OpenRead(DosyaAdi))
{
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
Stream requestStream = request.GetRequestStream();
requestStream.Write(buffer, 0, buffer.Length);
requestStream.Flush();
requestStream.Close();
}
}
catch (Exception ex)
{
}
});
}
}
Yukarıdaki kod bloğunda bulunan sınıf içerisindeki static “UploadFtpFile” metodu ile istediğiniz FTP’ye bağlanabilir ve dosya transferi gerçekleştirebilirsiniz.
Hepinize kolay gelsin 🙂
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Merhaba, ben Furkan Keleş Gaziantep Üniversitesi Elektrik Elektoronik Mühendisliği 4. Sınıf öğrencisiyim. Model uydu üzerine bir proje geliştiriyorum. Bu projem için c# winform üzerinden bir kontrol istasyonu tasarladım. Bir problem yaşıyorum, tam olarak cevap da bulamadım. Kontrol istasyonumdan filezilla eklentisi kurarak ftp protokolüyle model uyduda bulunan işlemcime dosya transferi yapmam gerekiyor ama bu dosya transferinde kullacağım bir internet bağlantısı yok. Aslında var; local internet olarak kullanıyorum telemetri aktarımını gerçekleştirmek için TCP veya UDP kullanarak bu yapılabiliyor. Asıl merak ettiğim kısım local internetimle filezilla eklentisinde ftp protokolüyle bir dosya transferi yapabilir miyim? Yardımcı olursanız çok sevinirim iyi geceler dilerim.
Selamlar,
Konuya dair herhangi bir fikrim bulunmamaktadır.
Eğer yaklaşım bulabilirseniz burada paylaşabilir ve bizleri de bilgilendirebilirsiniz.
Sevgiler.
Merhaba bu kod çalışıyordu ama son zamanlarda çalışmamaya başladı. Hosting taraflı birşey mi değişti acaba.Dosya izinleri açık. Kodda hata yok. Stream requestStream = request.GetRequestStream(); bu satırda sistem hatası dönüyor. Fikriniz var mı
Merhaba,
Sistem hatasında ne diyor?