我实现了一个文件上传使用ASP.NET MVC 3和Microsoft.Web.Helpers NuGet包图像。该实现很简单,因为它允许您浏览文件并将其上载到指定的目录。MVC 3图片上传图片
以下是我对使用ASP.NET MVC 3和Microsoft.Web.Helpers 的NuGet插件我的图片上传的解决方案。
现在视图模型代码
namespace MvcImageUpload.Models {
public class ImageUploadViewModel {
[UIHint("UploadedImage")]
public string ImageUrl { get; set; }
public string ImageAltText { get; set; }
}
}
现在的控制器我只是下降到这个Home控制器,因为这只是一个模拟的项目得到它的工作。我刚刚添加了一个将ImageUploadViewModel作为参数的ActionResult
。
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,它处理后形式的方法和具有编码类型设置为“多部分/格式数据”。
然后使用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,支持上传多个文件,但我无法找到如何实现这与我目前的解决方案。任何帮助都会很有帮助。
问题是我不知道如何去执行。 – 2011-05-17 09:05:13
此外,我发布此帮助其他人谁可能需要知道如何使用mvc 3上传文件。 – 2011-05-17 09:05:53
我已更新我的答案,并添加了一些链接到一些基本的教程,这将有助于您创建此.... – 2011-05-17 09:11:23