ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 低调看直播体育app软件下载 >> .NETjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 >> 在ASP.NET MVC下有关上传图片脏数据的解决方案

在ASP.NET MVC下有关上传图片脏数据的解决方案

来源:网络整理     时间:2015-01-04     关键词:

本篇文章主要介绍了"在ASP.NET MVC下有关上传图片脏数据的解决方案",主要涉及到方面的内容,对于.NETjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: 在"在ASP.NET MVC下实现单个图片上传, 客户端服务端双重限制图片大小和格式, 服务端裁剪图片"中,已经实现了在客户端和服务端限制图片大小和格式,以及在...

在"在ASP.NET MVC下实现单个图片上传, 客户端服务端双重限制图片大小和格式, 服务端裁剪图片"中,已经实现了在客户端和服务端限制图片大小和格式,以及在服务端裁剪图片。但还有一个重要的话题是需要面对的,那就是图片脏数据问题。


假设用户添加产品信息,并且上传了图片,可之后用户没有点击页面上的添加按钮,这就导致上传图片成为"脏数据",存在着却一直不会被使用。解决这个问题的大致思路是:

 

○ 在上传图片的时候,把图片保存到一个临时文件夹,或者叫缓存文件夹
○ 当用户真正保存的时候,再把临时文件夹的图片拷贝到最终目标文件夹

 

假设,有这样的一个Model,它的ImageUrl属性,用来存放图片真正的相对路径。

    public class ImgVm
{ [Required(ErrorMessage = "必填")] public string ImageUrl { get; set; } }

在HomeController中,存在如下的一些Action:

 

○ 提供一个显示上传页面的Action,并且是ImgVm类型的强类型视图,ImgVm的ImageUrl属性用来存放上传图片的相对路径
○ 提供一个接收ImgVm类型的Action,把临时文件夹内的图片复制到目标文件夹内,并且给ImgVm的ImageUrl属性赋上新的图片相对路径

 

        public ActionResult Index()
{ return View(new ImgVm()); } [HttpPost] public ActionResult Index(ImgVm imgVm) { if (ModelState.IsValid) { //目标文件夹路径 string pathForRealSaving = Server.MapPath("~/RealUpload/"); //目标文件夹内的用户文件夹路径 string pathForRealUserSaving = Server.MapPath("~/RealUpload/User001/"); //当前文件路径 string existingFilePath = Server.MapPath(imgVm.ImageUrl); //当前文件名,根据文件路径获得 string existingFileName = Path.GetFileName(existingFilePath); if (CreateFolderIfNeeded(pathForRealSaving)) { if (CreateFolderIfNeeded(pathForRealUserSaving)) { //根据当前文件路径获取当前文件 var existingfile = Path.GetFullPath(existingFilePath); //获取目标文件夹内的目标文件 var realfile = Path.Combine(pathForRealUserSaving, existingFileName); //把临时文件内的图片复制到目标文件夹内 System.IO.File.Copy(existingfile, realfile, true); //保存新的图片相对路径 imgVm.ImageUrl = "RealUpload/User001/" + existingFileName; } } return View("showimg", imgVm); } else { return Index(imgVm); } }


Home/Index.cshtml中多了在上传图片成功后给id为ImageUrl隐藏域赋值的部分。

 

@model MvcApplication10.Models.ImgVm
@{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } @using (Html.BeginForm("Index", "Home", FormMethod.Post, new {id = "addForm", @class = "form-horizontal"})) { display: none;" />
@Html.HiddenFor(m => m.ImageUrl) value="提交"/>
} @section scripts { }

 

还有一个Home/showimg.cshtml视图,用来显示新的(相对临时文件夹中的那张图片)图片。

@model MvcApplication10.Models.ImgVm
@{ ViewBag.Title = "showimg"; Layout = "~/Views/Shared/_Layout.cshtml"; }

showimg

 

当然,存放上传图片的临时文件夹是可以随时清理的。

 

以上就介绍了在ASP.NET MVC下有关上传图片脏数据的解决方案,包括了方面的内容,希望对.NETjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播有兴趣的朋友有所帮助。

本文网址链接:http://www.codes51.com/article/detail_103635.html

相关图片

相关文章