本文导读:在MVC中实现文件上传与传统的WebForm上传文件方法都差不多,在cshtml视图页面放一个file标签,然后在actionname方法中处理用户上传的文件。下面简单介绍MVC中上传文件的方法。
创新互联是一家专注于成都做网站、网站设计与策划设计,邵原网站建设哪家好?创新互联做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:邵原等地区。邵原做网站价格咨询:18980820575
一、MVC中如何上传文件
1、在Web Forms中,当你把一个FileUpload控件拖到设计器中,你或许没有注意到在生成的HTML中会在form标签中加入一条额外属性 enctype="multipart/form-data". 而FileUpload控件本身会生成为,在MVC的view里,下列HTML可以做到同样效果
HTML 代码 复制
注意form标签已经包括了enctype标签,而method属性则设为”post”,这样设置并不多于因为默认的提交时通过HTTP get方式进行
2、在Asp.net MVC中Controller类中,Request对象作为HttpRequestBase类型的一个属性存在。HttpReuqestBase其实是 HTTP请求的一个封装,暴漏了很多属性,包括Files collection(其实是HttpFileCollectionBase的集合),在集合中的每一个元素都是HttpPostedFileBase的 集合,扩展方法是用于确保上传的文件是否存在。实际上,这和FileUpload.HasFile()方法的工作原理一致。
二、MVC上传文件的实例:
1、视图文件
前台引擎采用Razor
上传页View:
C# 代码 复制
@model System.Web.HttpContextBase@{ ViewBag.Title = "上传文件";}上传文件
@*new { enctype = "multipart/form-data" }比不可少,否则上传文件不会成功 *@ @using (Html.BeginForm("Upload", "UploadFile", FormMethod.Post, new { enctype = "multipart/form-data" })){选择上传文件:
}
2、后台UploadFileController
C# 代码 复制
[HttpPost] public ActionResult Upload(FormCollection form) { if (Request.Files.Count == 0) { //Request.Files.Count 文件数为0上传不成功 Return View(); } var file = Request.Files[0]; if (file.ContentLength == 0) { //文件大小大(以字节为单位)为0时,做一些操作 Return View(); } else { //文件大小不为0 HttpPostedFileBase file = Request.Files[0]; //保存成自己的文件全路径,newfile就是你上传后保存的文件, //服务器上的UpLoadFile文件夹必须有读写权限 file.SaveAs(Server.MapPath(@"UploadFile\\newfile")); } newFile = DateTime.Now.ToString("yyyyMMddHHmmss") + ".sl"; return View(); }