Ara

C# İle Ftp Dosya Yükleme | Ftp Nedir?

C# ile FTP içerisine dosya yükleme işlemi, özellikle web tabanlı uygulamalarda dosya transferi için sıkça kullanılır. Bu işlem, FtpWebRequest sınıfı kullanılarak kolayca gerçekleştirilebilir. Bu yazıda, C# kullanarak FTP sunucusuna dosya yüklemenin adımlarını detaylı bir şekilde inceleyeceğiz.

 

FTP Nedir?

FTP (File Transfer Protocol), internet üzerinden dosya transferi yapmak için kullanılan bir protokoldür. FTP, dosyaların bir sunucudan bir istemciye veya bir istemciden bir sunucuya güvenli ve hızlı bir şekilde transfer edilmesini sağlar. Genellikle büyük dosyaların transferi ve yedekleme işlemleri için tercih edilir.

 

FTP ile Dosya İşlemleri Ne Zaman Kullanılır?

  • Web Sitesi Yedekleme: Web sitelerinin dosyalarını yedeklemek için kullanılır.
  • Büyük Dosya Transferleri: E-posta veya diğer yöntemlerle gönderilemeyecek kadar büyük dosyaların transferinde kullanılır.
  • Otomatik Dosya Transferi: Belirli periyotlarla güncellenmesi gereken dosyaların otomatik olarak transfer edilmesinde kullanılır.
  • Uygulama Güncellemeleri: Uygulamaların güncellemelerinin dağıtılması için kullanılır.

 

Gereksinimler

FTP ile dosya yükleme işlemi için aşağıdaki gereksinimlere ihtiyacınız olacaktır:

  • Bir FTP sunucusu ve bu sunucuya erişim için gerekli olan kullanıcı adı ve şifre.
  • Visual Studio gibi bir IDE ve C# programlama bilgisi.

 

FtpHelper Sınıfı ile Dosya Yükleme İşlemi

Öncelikle, FtpHelper isimli bir sınıf oluşturacağız ve tüm FTP işlemlerini bu sınıf içerisinde toplayacağız. Aşağıdaki kod parçası, dosya yükleme, indirme, silme ve listeleme işlemlerini gerçekleştiren bir sınıfın nasıl oluşturulacağını gösterir.

using System;
using System.Net;
using System.IO;

public class FtpHelper
{
    private string ftpUrl;
    private string username;
    private string password;

    public FtpHelper(string ftpUrl, string username, string password)
    {
        this.ftpUrl = ftpUrl;
        this.username = username;
        this.password = password;
    }

    public void UploadFile(string filePath)
    {
        FileInfo fileInf = new FileInfo(filePath);
        string uri = ftpUrl + "/" + fileInf.Name;
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
        request.Method = WebRequestMethods.Ftp.UploadFile;
        request.Credentials = new NetworkCredential(username, password);
        request.UsePassive = true;
        request.UseBinary = true;
        request.KeepAlive = false;

        using (FileStream fs = fileInf.OpenRead())
        {
            byte[] buffer = new byte[fs.Length];
            fs.Read(buffer, 0, buffer.Length);
            using (Stream reqStream = request.GetRequestStream())
            {
                reqStream.Write(buffer, 0, buffer.Length);
            }
        }
    }

    public void DownloadFile(string remoteFilePath, string localFilePath)
    {
        string uri = ftpUrl + "/" + remoteFilePath;
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
        request.Method = WebRequestMethods.Ftp.DownloadFile;
        request.Credentials = new NetworkCredential(username, password);
        request.UsePassive = true;
        request.UseBinary = true;
        request.KeepAlive = false;

        using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
        using (Stream responseStream = response.GetResponseStream())
        using (FileStream fs = new FileStream(localFilePath, FileMode.Create))
        {
            responseStream.CopyTo(fs);
        }
    }

    public void DeleteFile(string remoteFilePath)
    {
        string uri = ftpUrl + "/" + remoteFilePath;
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
        request.Method = WebRequestMethods.Ftp.DeleteFile;
        request.Credentials = new NetworkCredential(username, password);
        request.UsePassive = true;
        request.UseBinary = true;
        request.KeepAlive = false;

        using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
        {
            Console.WriteLine($"Dosya silindi, durum: {response.StatusDescription}");
        }
    }

    public void ListFiles()
    {
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl);
        request.Method = WebRequestMethods.Ftp.ListDirectory;
        request.Credentials = new NetworkCredential(username, password);
        request.UsePassive = true;
        request.UseBinary = true;
        request.KeepAlive = false;

        using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
        using (Stream responseStream = response.GetResponseStream())
        using (StreamReader reader = new StreamReader(responseStream))
        {
            string line = null;
            while ((line = reader.ReadLine()) != null)
            {
                Console.WriteLine(line);
            }
        }
    }
}

 

FtpHelper Sınıfının Kullanımı

Bu sınıfı kullanarak dosya yükleme işlemini gerçekleştirmek için projenizin Main fonksiyonunu aşağıdaki gibi düzenleyebilirsiniz:

 

class Program
{
    static void Main(string[] args)
    {
        string ftpUrl = "ftp://example.com";
        string username = "yourUsername";
        string password = "yourPassword";
        FtpHelper ftpHelper = new FtpHelper(ftpUrl, username, password);

        // Dosya Yükleme
        string filePathToUpload = "C:\\path\\to\\your\\file.txt";
        ftpHelper.UploadFile(filePathToUpload);
        Console.WriteLine("Dosya başarıyla yüklendi.");

        // Dosya İndirme
        string remoteFilePathToDownload = "remoteFile.txt";
        string localFilePathToSave = "C:\\path\\to\\save\\file.txt";
        ftpHelper.DownloadFile(remoteFilePathToDownload, localFilePathToSave);
        Console.WriteLine("Dosya başarıyla indirildi.");

        // Dosya Silme
        string remoteFilePathToDelete = "remoteFileToDelete.txt";
        ftpHelper.DeleteFile(remoteFilePathToDelete);
        Console.WriteLine("Dosya başarıyla silindi.");

        // Dosya Listeleme
        ftpHelper.ListFiles();
        Console.WriteLine("Dosyalar listelendi.");
    }
}

Bu yazıda, C# ile FTP içerisine dosya yükleme, indirme, silme ve listeleme işlemlerini gerçekleştiren bir FtpHelper sınıfı oluşturduk. Bu sınıf, FTP işlemlerini daha düzenli ve yeniden kullanılabilir hale getirir. Uygulamalarınızda dosya transferi işlemlerini bu sınıfı kullanarak kolayca gerçekleştirebilirsiniz.

FTP protokolü, özellikle büyük dosya transferlerinde ve otomatik dosya güncellemelerinde oldukça kullanışlıdır. FtpHelper sınıfı, tüm bu işlemleri C# dilinde basit ve etkili bir şekilde gerçekleştirmenizi sağlar.

Author

Bilgisayar programcılığı bölümü mezunuyum. Web ve masaüstü uygulama geliştiricisiyim. C#,.Asp.Net Core, JQuery, Ajax, Entity Framework konularında bilgi sahibiyim. Bu sitenin kurucusuyum . Aynı zamanda şiir yazmayı seven birisiyim. 2023 yılında "Gökkuşağının Koyu Tonu" adlı ilk şiir kitabım yayınlandı. Yazmaya devam ediyorum.
Yorum Yap
Yorumlar (0)