我已经使用ASP.NET Mvc 3和Microsoft.Web.Helpers NuGet 包实现了图像文件上传。该实现很简单,因为它允许您浏览文件并将其上传到指定目录。
这是我使用ASP.NET MVC 3和 Microsoft.Web.Helpers NuGet插件的图像上传解决方案。
现在是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 帖子请求图像,然后使用称为 ImageViewer 的自定义 DisplayFor 模板显示它。
@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,支持上传多个文件,但我找不到如何用我当前的解决方案来实现它。任何帮助将不胜感激。