Image MVC3图像上传
我有一个视图,其中包含允许用户上传图像的代码。我从一个我似乎找不到的网站上提取了代码。代码工作得很好,但是我的用户要求在提交页面之前查看图像的预览 “我的视图”中有以下“我的图像”和“上载”按钮Image MVC3图像上传,image,asp.net-mvc-3,Image,Asp.net Mvc 3,我有一个视图,其中包含允许用户上传图像的代码。我从一个我似乎找不到的网站上提取了代码。代码工作得很好,但是我的用户要求在提交页面之前查看图像的预览 “我的视图”中有以下“我的图像”和“上载”按钮 <div class="editor-field"> @if (Model.ImageData == null || Model.ImageData.Length == 0) { @:None } else { <i
<div class="editor-field">
@if (Model.ImageData == null || Model.ImageData.Length == 0) {
@:None
}
else {
<img width="150" height="150" alt="Item Image" src="@Url.Action("GetImage", "ItemManagement")" />
}
<div>Upload new image: <input type="file" name="Image" /></div>
</div>
因此,当我的视图被发回时,我的控件中的添加操作如下所示
@using(Html.BeginForm("Add", "ItemManagement", FormMethod.Post, new{enctype="multipart/form-data"})) {
[HttpPost]
public ActionResult Add(ItemAddModel model, HttpPostedFileBase image) {
if (!ModelState.IsValid) {
return View(model);
}
if (image != null) {
model.ImageMimeType = image.ContentType;
model.ImageData = new byte[image.ContentLength];
image.InputStream.Read(model.ImageData, 0, image.ContentLength);
}
_itemService.AddItem(model);
return RedirectToAction("Index");
}
就像我说的,这里的一切都很好。但只有当表单提交后,我的用户再次打开页面,他们才能看到他们上传的图像。我想添加一个更新按钮,它将获取图像并将其加载到图像控件中,而无需发回服务器。在提交表单之前,我不想将图像存储在数据库中。您可以签出。它使用nice。您可以签出。它使用了nice。如果你可以使用html5,你可以查看如果你可以使用html5,你可以查看以下是我认为的代码。其中的重要部分是将提交按钮的名称设置为“UploadImageButton”。这与控制器中的操作方法所使用的ViewModel中的属性相匹配。另外,class=“style name cancel”可以防止启动客户端验证
<div class="editor-field">
@if (Model.ImageData == null || Model.ImageData.Length == 0) {
@:None
}
else {
<img id="itemImage" width="150" height="150" alt="@Model.ItemName" src="@Url.Action("GetImage", "ItemManagement", new { Model.ItemID })" />
}
@FileUpload.GetHtml(initialNumberOfFiles: 1, allowMoreFilesToBeAdded: false, includeFormTag: false, addText: "Add Image", uploadText: "Upload Image") <br />
<input type="submit" name="UploadImageButton" value="Upload Image" class="style-name cancel" />
</div>
现在,我的用户可以上传一幅图像,这会进行回发,但不会触发任何验证,并将其他编辑保持在上传时的状态。以下是我视图中的代码。其中的重要部分是将提交按钮的名称设置为“UploadImageButton”。这与控制器中的操作方法所使用的ViewModel中的属性相匹配。另外,class=“style name cancel”可以防止启动客户端验证
<div class="editor-field">
@if (Model.ImageData == null || Model.ImageData.Length == 0) {
@:None
}
else {
<img id="itemImage" width="150" height="150" alt="@Model.ItemName" src="@Url.Action("GetImage", "ItemManagement", new { Model.ItemID })" />
}
@FileUpload.GetHtml(initialNumberOfFiles: 1, allowMoreFilesToBeAdded: false, includeFormTag: false, addText: "Add Image", uploadText: "Upload Image") <br />
<input type="submit" name="UploadImageButton" value="Upload Image" class="style-name cancel" />
</div>
现在,我的用户可以上传一张图像,这会进行回发,但不会触发任何验证,并将其他编辑保持在上传时的状态。我无法让链接正常工作。显示为黑色页面。我希望有一种方法,我可以上传文件到一个临时文件夹,并显示从那里。也许是AJAX调用?MVC对我来说是比较新的,所以我已经掌握了基本知识,但通常很难找到更高级的东西。似乎在你上传图片的任何地方,你都可以在提交之前预览你上传的内容。@Jeff Reddy,这个链接对我来说很好。你是在某个代理或防火墙后面吗?我必须用IE打开,用Firefox渲染失败。我正在尝试使用Microsoft.Web.Helpers和FileUpload.GetHtml。我来看看我的结果如何。我无法获得链接。显示为黑色页面。我希望有一种方法,我可以上传文件到一个临时文件夹,并显示从那里。也许是AJAX调用?MVC对我来说是比较新的,所以我已经掌握了基本知识,但通常很难找到更高级的东西。似乎在你上传图片的任何地方,你都可以在提交之前预览你上传的内容。@Jeff Reddy,这个链接对我来说很好。你是在某个代理或防火墙后面吗?我必须用IE打开,用Firefox渲染失败。我正在尝试使用Microsoft.Web.Helpers和FileUpload.GetHtml。我来看看我的结果如何。