ASP.NET MVC ile Dosya okuma ve yazma işlemleri

14 May

Web ortamında bazı durumlarda dosyalarla işlem gerektiren durumlar olabilmektedir. Örneğin bir HTML sayfa, CSS dosyası, Text dosya veya şu anda aklıma gelmeyen bir çeşit dosyanın içeriğinin online olarak değiştirilmesi gibi.

Bu işlemi, ASP.NET MVC ortamında nasıl gerçekleştirebileceğimizi inceleyelim. Bu işlem için dosyalarımızın bulunduğu bir dizini belirleyip içindeki dosyaları kullanıcının önüne döküp, istediği gibi düzenlemesini sağlamaya çalışalım.

Dizin içindeki dosyaları kullanıcıya veren bir model sınıfı oluşturalım.


public class PersonelFiles
{
      public string FileName { get; set; }
}

Bu model sınıfından üretilen bir view oluşturmak için File controller içerisine Files adında bir action metod oluşturalım.


public class FileController : Controller
{
      public ActionResult Files()
      {
         DirectoryInfo directory = new DirectoryInfo(Server.MapPath("~/Files"));

         var personelFiles = new List<PersonelFiles>();

         foreach (var item in directory.GetFiles("*.txt"))
         {
             personelFiles.Add(new PersonelFiles { FileName = item.Name });
         }

         return View(personelFiles);
     }
}

Files dizinindeki *.txt uzantılı dosyalarımızı listeleyecek bir view artık bu action metod üzerinden oluşturulabilir. Files() action metoduna sağ tıklayıp create view diyerek ilerleyebiliriz.

Şimdi de dosyaların içeriğini editleme işlemini gerçekleştirmek için, düzenle linkine tıklandığında dosya içeriğini bir kutu içerisinde bize sunacak action metodu yazalım.

Metod adı Edit şeklinde olacaktır.


public ActionResult Edit(string id)
{
     if (!string.IsNullOrEmpty(id))
     {
         StreamReader reader = new StreamReader(Server.MapPath("~/Files/") + id, System.Text.Encoding.Default);

         var content = new FileEditFormView()
         {
             FileContent = reader.ReadToEnd(),
             FileName = id
         };

         reader.Close();
         reader.Dispose();

         return PartialView("_Edit", content);
     }

     return View("FileNotFound");

}

Edit modtodu, düzenle linkine tıkladığımızda linkteki id parametresiyle dosya adını Edit metoduna verecektir. dosya içeriği okundukran sonra  FileEditFormView şeklinde karşımıza gelecektir.

Kaydet butonuna bastığımızda da POST metodu ile gönderdiğimizde de yazma işlemini gerçekleştireceğiz.


[HttpPost]
public ActionResult Edit(FileEditFormView form)
{
      StreamWriter writer = new StreamWriter(Server.MapPath("~/Files/") + form.FileName, false, System.Text.Encoding.Default);

      writer.Write(form.FileContent);
      writer.Close();
      writer.Dispose();

      return RedirectToAction("Files");
}

Bu şekilde işlem tamamlanmış olacaktır.

Düzenleme Geçmişi:

Başlık düzenlendi 25.09.2013
İçerik düzenlendi 25.09.2013