MVC 4.0 FileUpload
Asp.NET’ten sonra Asp.NET MVC’de FileUpload nesnesinin işlevlerini yapmakta azda olsa zorluk çekiyoruz.Eğer bu yazıyı okuyorsanız büyük ihtimal bu konuda benim takıldığım bazı noktalara sizlerde takılmışsınızdır.Bence içinizi ferah tutun.Bu konuda ki sıkıntımı ben halledebildiysem, emin olun sizin sıkıntınızın cevabını da bu yazımda vermiş olacağım.
MVC projelerinde FileUpload nesnesi ne yazık ki mevcut değil.Ziyanı yok.Html kontrolü kullanarak FileUpload nesnesini projemize eklemiş oluyoruz.
@using (Html.BeginForm("ActionAdi", "ControllerAdi", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="uploadFile" />
<input type="submit" value="Ekle">
}
Yukarıda gördüğünüz gibi, bir File ve Submit nesnesi mevcut.Burada File nesnesiyle seçilen dosyaya, Controller katmanında ulaşmak gerçekten çok sıkıcı bir durumdu benim için.Birazdan göreceğimiz yöntem neticesinde “NULL” sonucunu almak çok sinirlerimi geriyordu.Şimdi sizlere buradan püf noktaları vermeye başlayayım.
Eğer File nesneniz ile seçtiğiniz elemana Controller katmanında rahat bir şekilde ulaşabilmek istiyorsanız eğer, Html.BeginForm() metodu içindeki parametreler yukarıda gözüktüğü gibi olmalıdır.Tabi burada kastım, Action ve Controller adlarının doğrusunu yazmanız.
Bir başka tüyo, File nesnemizin “name” özelliği çok önemli.Neden mi?Aşağıdaki kodu inceleyin.
[HttpPost]
public ActionResult Metod(HttpPostedFileBase uploadFile, Teknolojiler Teknoloji)
{
...
}
Dikkat ettiniz mi?”HttpPost” Attribute’uyla işaretlenmiş “Metod” ismindeki Action’ımıza “HttpPostedFileBase” tipinden bir parametre ekledik ve bu parametrenin adı da File nesnemizin “name” özelliğiyle aynı.
Demek oluyor ki, bu şartlar dört dörtlük, hatasız, istinasız gerçekleşince, “HttpPostedFileBase” tipinden olan parametremiz, File nesnemizin elemanını “Post” durumunda yakalayabiliyor.
İyi çalışmalar..
