Bu yazımızda Asp.Net MVC ile siteye (projeye) dosya yükleme işleminin nasıl yapıldığını öğrenelim.
Öncelikle projemizde HomeController içine DosyaYukle isminde bir action oluşturalım.
public ActionResult DosyaYukle() { return View(); }
DosyaYukle’ye sağ tıklayıp View oluşturalım: DosyaYukle.cshtml
DosyaYukle.cshtml içerisinde dosya yükleme işlemini gerçekleştireceğiz. Bu işlem için öncelikle bir form oluşturalım. Form’un metodunu post, enctype’ını multipart/form-data olarak ayarlayalım. Formlarda dosya işlemleri yapılacağı zaman formun enctype’ı (content type’ı) multipart/form-data olarak tanımlanır.
Formu oluşturduktan sonra içerisine bir adet input > file ve bir adet input > submit kontrolleri yerleştirelim. input > file kontrolünün name özelliğini yuklenecekDosya olarak ayarlayalım. Bu tanımı controller içerisinde kullanacağız.
<form method="post" enctype="multipart/form-data"> <input type="file" name="yuklenecekDosya" /> <input type="submit" value="Yükle" /> </form>
Şimdi HomeController içerisine DosyaYukle isminde bir metod daha tanımlayalım.
[HttpPost] public ActionResult DosyaYukle(System.Web.HttpPostedFileBase yuklenecekDosya) { return View(); }
Bu metod, formun post işlemi sırasında çalışacağı için HttpPost attribute’ü ile tanımlıyoruz. Parametre olarak input > file’dan verileri alabilmek için HttpPostedFileBase sınıfı türünden bir nesne alıyoruz. Parametrenin ismi lie View içindeki input > file nesnesinin ismi aynı olmalıdır.
Yüklenecek dosya bilgilerini alıp yükleme işlemini tamamlayalım.
if (yuklenecekDosya != null) { string dosyaYolu = Path.GetFileName(yuklenecekDosya.FileName); var yuklemeYeri = Path.Combine(Server.MapPath("~/Dosyalar"), dosyaYolu); yuklenecekDosya.SaveAs(yuklemeYeri); }
- Eğer yuklenecekDosya değişkeninin değeri null değilse yükleme işlemi gerçekleşecektir.
- dosyaYolu değişkeninde, yüklenecek dosyanın bulunduğu ismini alıyoruz.
- yuklemeYeri değişkeninde, Path.Combine metodu ile dosyanın yükleneceği yer bilgisini alıyoruz. Dosyayı proje içerisinde Dosyalar klasörüne yükleyeceğiz.
- Son bölümde yuklenecekDosya.SaveAs metodu ile dosyayı sistemde yuklemeYeri noktasına yükleme işlemini gerçekleştiriyoruz.
DosyaYukle actionının son hali aşağıdaki gibi olacaktır.
[HttpPost] public ActionResult DosyaYukle(System.Web.HttpPostedFileBase yuklenecekDosya) { if (yuklenecekDosya != null) { string dosyaYolu = Path.GetFileName(yuklenecekDosya.FileName); var yuklemeYeri = Path.Combine(Server.MapPath("~/Dosyalar"), dosyaYolu); yuklenecekDosya.SaveAs(yuklemeYeri); } return View(); }
Projeyi çalıştırıp MetinDosyasi.txt isimli bir dosyayı siteye yükleyiniz. Yükleme işlemi tamamlandıktan sonra Solution Explorer’ı yenileyiniz (refresh). Dosyalar klasörü içinde MetinDosyasi.txt’nin geldiğini göreceksiniz.
Yepyeni makalelerde görüşmek dileğiyle :)
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi
veysel@ugurkizmaz.com
www.ugurkizmaz.com