ASP.NET MVC实现批量文件上传
根据项目需要,研究了一下如何在ASP.NETMVC下实现批量文件上传。首先,介绍单文件上传;然后,介绍多文件上传如何实现。
一、单文件上传
单文件上传的原理是将文件数据放入request中,由页面直接传递至后台controller中,类似于view和controller之间传参数,直接贴上代码加注释。
Upload.aspx文件中的代码:
Controller中代码:
[HttpPost] publicActionResultUpload(FormCollectionform) { if(Request.Files.Count==0){ //Request.Files.Count文件数为0上传不成功 returnView(); } varfile=Request.Files[0]; if(file.ContentLength==0){ //文件大小大(以字节为单位)为0时,做一些操作 returnView(); } else{ //文件大小不为0 file=Request.Files[0];//服务器上的UpLoadFile文件夹必须有读写权限 stringtarget=Server.MapPath("/")+("/Mock/Learning/");//取得目标文件夹的路径 stringfilename=file.FileName;//取得文件名字 stringpath=target+filename;//获取存储的目标地址 file.SaveAs(path);} returnView(); }
这里需要注意的是,在ASP.NET中,request的默认大小为4M,因此,如需上传较大文件,需要更改Web.config。
二、批量文件上传
思路是通过js根据用户需求动态添加上传控件,多个文件通过request一并上传至controller。
Upload.aspx文件中的代码:
Controller中的代码:
[HttpPost] publicActionResultUpload(FormCollectionform) { foreach(stringiteminRequest.Files) { HttpPostedFileBasefile=Request.Files[item]asHttpPostedFileBase; if(file==null||file.ContentLength==0) continue; //判断Upload文件夹是否存在,不存在就创建 stringpath=Server.MapPath("..//Upload"); if(!System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(path); } path=AppDomain.CurrentDomain.BaseDirectory+"Upload/"; //获取上传的文件名 stringfileName=file.FileName; //上传 file.SaveAs(Path.Combine(path,fileName)); } returnContent(""); }
注意在Request.Files中,不同文件的index是上传控件的name属性值,因此在aspx页面代码中必须保证多个上传控件的name属性值互不相同。
以上便实现了批量文件上传。
本人才疏学浅,仅供大家参考,若有不当之处,请大家批评指正!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。