Контроллер CrudManually
//replace HttpPostedFile with HttpPostedFileBase object
//please add server.Mappath function into code for exact foler structure to save file
public class CrudManuallyController : Controller
{
public ActionResult Create()
{
return View();
}
// POST: CrudManually/Create
[HttpPost]
public ActionResult Create(manage manages,HttpPostedFileBase image)
{
try
{
var folderPath = Server.MapPath("~/Images/");
image.SaveAs(Path.Combine(folderPath, image.FileName));
manages.Image= Path.Combine(folderPath, image.FileName);
// TODO: Add insert logic here
db.manages.Add(manages);
db.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View(manages);
}
}
}
create.cshtml
//encytype is wrong please replace it with enctype
//input file name="file" so it will not set on controller side as its name on controller side is 'image', so you need to repalce name='file' with name='image'
<h2>Create</h2>
@using (Html.BeginForm("Create", "CrudManually", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="editor-label">
@Html.LabelFor(model => model.Image)
</div>
<div class="editor-field">
<input id="Image" title="Image Uploading" type="file" name="image" />
</div>
}
Index.cshtml
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.Image)
</th>
</tr>
<tr>
@foreach (var item in Model)
{
<td>
<img src="@Url.Content('~/Images/' + item.Image)" alt="Image not display" width="20%" height="20%" />
</td>
}
</tr>
</table>
Объяснение:
ASP.NET C # MVC предоставляет средство класса HttpPostedFileBase - абстрактного класса, который содержит те же члены, что и класс HttpPostedFile.поэтому мы можем использовать этот абстрактный класс при работе с загрузкой файла на сервер.
Шаг 1: Для этого нам нужно использовать тип ввода файла с атрибутом name .
Шаг 2: Форма должна быть POST с enctype = "multipart / form-data"
Шаг 3: На стороне контроллера нам нужно получить значение объекта HttpPostedFileBase сто же имя, которое мы уже дали типу входного файла
public ActionResult Create(manage manages,HttpPostedFileBase image)
Шаг 4. После выполнения всех шагов, описанных в публикации формы, вы получите значение файла в объекте изображения типа HttpPostedFileBase, а затем вам нужнопроверьте условие обнуляемости и просто введите код для сохранения файла.
var virtualPath = StaticValues.AdvertisementImagePath;
var physicalPath = Server.MapPath(virtualPath);
Utilities.SaveFile(fileObject, virtualPath, physicalPath, "FILE PATH");