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 Metodu:
DeleteFilemetodu, verilen dosya yoluna göre dosyanın var olup olmadığını kontrol eder. Dosya mevcutsaSystem.IO.File.Deletefonksiyonunu kullanarak dosyayı siler ve işlem sonucunutrueolarak döndürür. Dosya bulunamıyorsa veya bir hata oluşursafalsedeğeri döndürülür. - Dosya Yolu Belirleme: Dosya yolu belirlenirken
Directory.GetCurrentDirectory()ile proje kök dizinini alıyoruz vewwwrootklasö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!