آموزش استفاده از FileUpload و بارگزاری فایل در ASP.NET MVC
در این مقاله نحوه استفاده از FileUpload وبارگزاری یک فایل در ASP.Net MVC 5 را با مثال توضیح میدهیم.
قبل از آپلود فایل، بررسی میکنیم که آیا پوشه (Directory) وجود دارد یا نه در صورت موجود نبودن آن را ایجاد میکنیم بعد از آن فایل بارگزاری خواهد شد.
View
Viewزیر شامل یک HTML FileUpload، یک دکمه Submit و یک SPAN برای نمایش پیام در یک Form است.
فرم HTML با استفاده از روش Html.BeginForm که پارامترهای زیر را می پذیرد ایجاد شده است.
ActionName - نام اکشن که در اینجا Index است.
ControllerName - نام Controller کننده که در اینجا Home است.
FormMethod - روش فرم را یعنی GET یا POST مشخص می کند. در این مورد به POST استفاده خواهد شد.
HtmlAttributes - این آرایه اجازه می دهد تا ویژگیهایی برای ارسال فرم مشخص کند. در اینجا ما باید مشخص کنید enctype = "multipart / form-data" که برای آپلود فایلها ضروری است.
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>آپلود فایل با asp.net mvc</title>
<style type="text/css">
body
{
font-family: Arial;
font-size: 10pt;
}
</style>
</head>
<body>
<div>
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<span>انتخاب فایل:</span>
<input type="file" name="postedFile" />
<hr />
<input type="submit" value="بارگزاری" />
<br />
<span style="color:green">@ViewBag.Message</span>
}
</div>
</body>
</html>
فضاهای نام
ابتدا فضای نام زیر را وارد کنید.
using System.IO;
Controller
روش Action Index به طور پیش فرض از عملیات GET پشتیبانی می کند و از این رو برای عملیات POST یک ActionResult که پارامتر نوع HttpPostedFileBase را پذیرفته ایجاد شده است.
توجه : نام پارامتر HttpPostedFileBase و نام عنصر HTML FileUpload باید دقیقا یکسان باشد، در غیر این صورت پارامتر HttpPostedFileBaseمقدار NULL خواهد بود.
ابتدا بررسی می شود که آیا Directory (پوشه) وجود دارد یا نه، سپس Directory (پوشه) ایجاد شده است و سپس فایل به دایرکتوری (پوشه) ذخیره می شود.
در نهایت یک پیام برای کاربر با استفاده از ViewBag نمایش داده می شود.
public class HomeController : Controller
{
// GET: Home
[HttpGet]
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(HttpPostedFileBase postedFile)
{
if (postedFile != null)
{
string path = Server.MapPath("~/Uploads/");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
postedFile.SaveAs(path + Path.GetFileName(postedFile.FileName));
ViewBag.Message = "فایل با موفقیت بارگزاری شد.";
}
return View();
}
}