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" />&nbsp&nbsp

          <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
Mesaj Yaz