Dosya upload işlemi MVC de nasıl yapılır
WEB sayfalarında özellikle yönetim panellerin kullanılan dosya yükleme işlemi için MVC de HttpPostedFileBase sınıfı mevcuttur. Öncelikle Home isimli bir Controller oluşturup bu kontrole Index Viewi ekleyelim.Viewi şöyle tasarlayalım.
<body>
<form action="/Home/index" method="post" enctype="multipart/form-data">
@TempData["durum"]
<div>
<input type="file" name="dosya" class="button" />  
<input type="submit" value="Gönder" class="button" />
</div>
</form>
</body>
Form tagına dikkat edelim dosya yükleme işlemi yapacağımız için enctype özelliğini "multipart/form-data" olarak ayarladık.Şimdi Home controller kısmına geçip aşağıdaki kodları yazalım.Using bölümüne using System.IO; eklemeyi unutmayalım.
[HttpPost]
public ActionResult Index(HttpPostedFileBase dosya)
{
if (dosya != null && dosya.ContentLength > 0)
{
var yol = Path.Combine(Server.MapPath("~/dosya"), dosya.FileName);
dosya.SaveAs(yol);
TempData["durum"] = "Yükleme Başarılı.";
}
return View();
}
İşte bu kadar.Hadi gelin bu kodu biraz daha geliştirelim. Dosya türüne göre kontrol koyalım.Sadece resim dosyaları yüklenebilsin.
public ActionResult Index(HttpPostedFileBase dosya)
{
if (dosya != null && dosya.ContentLength > 0)
{
string[] dosyaturu = { "jpg", "jpeg", "png" };
var dosya_uzanti = Path.GetExtension(dosya.FileName).Substring(1);
if (!dosyaturu.Contains(dosya_uzanti))
{
TempData["durum"] = "Lütfen resim dosyası seçiniz.";
return View();
}
var yol = Path.Combine(Server.MapPath("~/dosya"), dosya.FileName);
dosya.SaveAs(yol);
TempData["durum"] = "Yükleme Başarılı.";
}
return View();
}
Koyu olarak eklediğim satırlar resim dosyası kontrolü içindir. Peki yüklediğimiz resimler çok büyük küçültmek için ne yapmalıyız derseniz. using bölümüne using System.Web.Helpers; ifadesini ekleyin ve aşağıdaki kodu yazın.
public ActionResult Index(HttpPostedFileBase dosya)
{
if (dosya != null && dosya.ContentLength > 0)
{
string[] dosyaturu = { "jpg", "jpeg", "png" };
var dosya_uzanti = Path.GetExtension(dosya.FileName).Substring(1);
if (!dosyaturu.Contains(dosya_uzanti))
{
TempData["durum"] = "Lütfen resim dosyası seçiniz.";
return View();
}
var yol = Path.Combine(Server.MapPath("~/dosya"), dosya.FileName);
dosya.SaveAs(yol);
WebImage resim = new WebImage(yol);
resim.Resize(100, 100);
resim.Save(yol);
TempData["durum"] = "Yükleme Başarılı.";
}
return View();
}
Koyu olan satırlar resim boyutunu ayarlamak için kullanılmıştır.
Etiketler
Upload
HttpPostedFileBase
Path
Combine