Posted in

ASP.NET Core MVC ile Dosya Silme İşlemi: Sunucu Üzerinde Belirli Dosyaları Yönetme

Bu blog yazısında, ASP.NET Core MVC uygulamalarında belirli dosyaları sunucudan nasıl sileceğinizi öğrenebilirsiniz. Örneğimiz, kullanıcıya dosya silme işleminin başarılı olup olmadığını bildiren basit bir yapı içermektedir. Bu işlem özellikle yükleme işlemlerinden sonra gereksiz dosyaları temizlemek veya sunucudaki dosya düzenini korumak isteyen geliştiriciler için faydalıdır.

Örnek Kod

Aşağıdaki kodda HomeController içinde, sunucuda belirli bir dosyanın silinmesini sağlayan bir metot bulunmaktadır. Bu metot, dosyanın var olup olmadığını kontrol eder ve işlemi sonuçlandırır.

using DosyaDelete.Models;
using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;

namespace DosyaDelete.Controllers
{
    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;

        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }

        public IActionResult Index()
        {
            bool isDeleted = DeleteFile("Uploads/3.png");
            ViewBag.Message = isDeleted ? "Dosya başarıyla silindi." : "Dosya bulunamadı veya silinemedi.";

            return View();
        }

        private bool DeleteFile(string relativeFilePath)
        {
            try
            {
                // wwwroot yolunu dinamik olarak al
                string wwwrootPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot");

                // Tam dosya yolunu oluştur
                string filePath = Path.Combine(wwwrootPath, relativeFilePath);

                // Dosyanın var olup olmadığını kontrol et
                if (System.IO.File.Exists(filePath))
                {
                    // Dosyayı sil ve true döndür
                    System.IO.File.Delete(filePath);
                    return true;
                }
                else
                {
                    // Dosya yoksa false döndür
                    return false;
                }
            }
            catch
            {
                // Hata oluştuysa false döndür
                return false;
            }
        }

        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    }
}

Kodun Detaylı İncelemesi

Kod, Index metodunda dosyanın başarıyla silinip silinmediğini kontrol eder ve durumu ViewBag.Message ile kullanıcıya bildirir. Bu bilgi daha sonra View katmanında görüntülenir.

  • DeleteFile MetoduDeleteFile metodu, verilen dosya yoluna göre dosyanın var olup olmadığını kontrol eder. Dosya mevcutsa System.IO.File.Delete fonksiyonunu kullanarak dosyayı siler ve işlem sonucunu true olarak döndürür. Dosya bulunamıyorsa veya bir hata oluşursa false değeri döndürülür.
  • Dosya Yolu Belirleme: Dosya yolu belirlenirken Directory.GetCurrentDirectory() ile proje kök dizinini alıyoruz ve wwwroot klasörünü ekleyerek dinamik bir dosya yolu oluşturuyoruz. Bu sayede proje dizin yapısı değişse bile doğru dosya yoluna ulaşılabilir.

Dosya Silme İşleminin Başarısını Kullanıcıya Bildirme

Bu işlem sonucunda ViewBag.Message, dosyanın başarıyla silinip silinmediğine göre "Dosya başarıyla silindi." veya "Dosya bulunamadı veya silinemedi." mesajlarını kullanıcıya iletecektir.

Hata Yönetimi

Kodda, hata oluşması durumunda işlemin kesintiye uğramaması için bir try-catch bloğu bulunmaktadır. Hata durumunda DeleteFile metodu false değeri döndürür ve bu durum kullanıcıya bildirilir.

Sonuç

ASP.NET Core MVC ile dosya silme işlemi, sunucuda dosyaları yönetmek ve gereksiz dosyaları temizlemek isteyen geliştiriciler için oldukça işlevsel bir yöntemdir. Bu yapıyı geliştirerek, dosya yönetimi üzerinde daha fazla kontrol sağlayabilir ve sistem performansını artırabilirsiniz.

ASP.NET Core MVC’de dosya yönetimi ile ilgili başka konuları incelemek için takipte kalın ve dosya silme işlemlerinde en iyi uygulamalara odaklanarak daha güvenli bir sistem oluşturun!

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir