Я реализовал загрузку файлов для изображений, используя ASP.NET Mvc 3 и Microsoft.Web.Helpers NuGet пакет . Реализация довольно проста, так как позволяет вам искать файл и загружать его в указанный каталог.
Вот что у меня есть для решения по загрузке изображений с использованием ASP.NET MVC 3 и плагина Microsoft.Web.Helpers NuGet .
![enter image description here](https://i.stack.imgur.com/Kl6LP.png)
Теперь ViewModel код
namespace MvcImageUpload.Models {
public class ImageUploadViewModel {
[UIHint("UploadedImage")]
public string ImageUrl { get; set; }
public string ImageAltText { get; set; }
}
}
Теперь для контроллера Я просто перенес это в контроллер Home, поскольку это всего лишь фиктивный проект, чтобы заставить его работать. Я только что добавил ActionResult
, который принимает ImageUploadViewModel в качестве параметра.
public ActionResult Upload(ImageUploadViewModel model) {
var image = WebImage.GetImageFromRequest();
if (image != null) {
if (image.Width > 500) {
image.Resize(500, ((500 * image.Height) / image.Width));
}
var filename = Path.GetFileName(image.FileName);
image.Save(Path.Combine("../Uploads/Images", filename));
filename = Path.Combine("~/Uploads/Images", filename);
model.ImageUrl = Url.Content(filename);
model.ImageAltText = image.FileName.Substring(0, image.FileName.Length - 4);
}
return View("Index", model);
}
Мой взгляд на загрузку изображений прост, у него есть Html.BeginForm, который обрабатывает метод формы Post и имеет тип кодировки, равный «multipart / form-data».
Затем с помощью помощника Microsoft.Web.Helpers.FileUpload я запрашиваю изображение из сообщения HTTP, а затем отображаю его с помощью пользовательского шаблона DisplayFor, называемого ImageViewer.
@model MvcImageUpload.Models.ImageUploadViewModel
@using Microsoft.Web.Helpers;
@{
ViewBag.Title = "Index";
}
<h2>Image Uploader</h2>
@using (Html.BeginForm("Upload", "Home", FormMethod.Post,
new { @encType = "multipart/form-data" })) {
@FileUpload.GetHtml(initialNumberOfFiles: 1, allowMoreFilesToBeAdded: false,
includeFormTag: false, addText: "Add Files", uploadText: "Upload File") <br />
<input type="submit" name="submit"
value="Upload Image" text="Upload Images"
style="font-size: .9em;" />
@Html.DisplayFor(x => x, "ImageViewer")<br />
}
Вот как выглядит пользовательский DisplayTemplate
@model MvcImageUpload.Models.ImageUploadViewModel
@if (Model != null) {
<h4 style="color:Green;">Upload Success!</h4>
<p>
Alt Text has been set to <strong>@Model.ImageAltText</strong>
</p>
<img style="padding: 20px;"
src="@(String.IsNullOrEmpty(Model.ImageUrl) ? "" : Model.ImageUrl)"
id="uploadedImage" alt="@Model.ImageAltText"/>
}
Это все работает, и изображение успешно загружено в /Uploads/Images/FileName.extension в сообщении формы.
Мой вопрос
Как теперь я могу иметь другое представление для отображения всех изображений в этом каталоге, разбито на страницы и иметь возможность выбирать, удалять и изображения из представления и каталога?
Также я знаю, что Microsoft.Web.Helpers.FileUpload поддерживает загрузку нескольких файлов, но я не могу найти, как реализовать это с моим текущим решением. Любая помощь будет высоко оценена.