آپلود فایل ها در ASP.NET MVC 6

امروزه آپود فایل نیاز یک طراح وب بوده است و ASP.NET MVC6 نیز این کار را روی سرورشما آسان کرده است. ما در این مقاله به توضیح آن می پردازیم.

ابتدا یک پروژه جدید از نوع ASP.NET MVC6 ایجاد کرده و سپس  HomeController را به فولدر کنترل ها اضافه کنید.سپس UploadFiles را اضافه کنید.

فرم  HTML برای آپلود فایل ها:

نمای آپلود فایل را باز کرده و کدهای HTML زیررا به آن اضافه کنید:

<form asp-action="UploadFiles"
      asp-controller="Home"
      method="post"
      enctype="multipart/form-data">
    <input type="file" name="files" multiple />
    <input type="submit" value="Upload Selected Files" />
  </form>

همان طور که در کد بالا می بینید در فرم خاصیت    asp-action برابر با آپلود فایل است و توسط ان پردازش می شود. و خاصیت asp-controller نیز برابر Home  است. فرم  به صورت POST ارسال می شود. و خاصیت enctype نیز برابر با multipart/from-data قرار داده شده است. و بعد دکمه آپلود و دکمه ارسال نوشته شده است.

اگر برنامه را اجرا کنید شکلی به صورت زیر خواهید دید:

حالا باید کدهای طرف سرور را نوشت:

صفحه Homecontroller را باز کرده و یک سازنده مثل زیر را به آن اضافه کنید:

public class HomeController : Controller
}
   ; private IHostingEnvironment hostingEnv
   ( public HomeController(IHostingEnvironment env
    }
        this.hostingEnv = env;
    }
{

سازنده پارامتری به نام IHostingEnvironment) Microsoft.AspNet.Hosting namespace) دارد. این پارامتر توسط MVC به سازنده تزریق می شود.ما به این پارامتر برای ساخت مسیر برای ذخیره آپلود فایل داریم. شی IHostingEnvironment متغیرها را برای استفاده های بعدی در خود ذخیره می کند.

برای دریافت اطلاعات کد زیر را وارد کنید:

public IActionResult UploadFiles()
}
  ; () return View
{

در نهایت ایجاد یک Handling برای مدیریت درخواست های متد POST:

[HttpPost]
public IActionResult UploadFiles(IList<IFormFile> files)
{
    long size = 0;
    foreach(var file in files)
    {
        var filename = ContentDispositionHeaderValue
                        .Parse(file.ContentDisposition)
                        .FileName
                        .Trim('"');
        filename = hostingEnv.WebRootPath + $@"\{fileName}";
        size += file.Length;
        file.SaveAs(filename);
    }
    ViewBag.Message = $"{files.Count} file(s) /
                      {size} bytes uploaded successfully!";
    return View();
}

 

winkblushenlightenedheartbroken heartheartlaughnononono