最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

ASP.NET MVC实现批量文件上传

来源:动视网 责编:小采 时间:2020-11-27 22:34:54
文档

ASP.NET MVC实现批量文件上传

ASP.NET MVC实现批量文件上传:根据项目需要,研究了一下如何在ASP.NETMVC下实现批量文件上传。首先,介绍单文件上传;然后,介绍多文件上传如何实现。 一、单文件上传 单文件上传的原理是将文件数据放入request中,由页面直接传递至后台controller中,类似于view和controlle
推荐度:
导读ASP.NET MVC实现批量文件上传:根据项目需要,研究了一下如何在ASP.NETMVC下实现批量文件上传。首先,介绍单文件上传;然后,介绍多文件上传如何实现。 一、单文件上传 单文件上传的原理是将文件数据放入request中,由页面直接传递至后台controller中,类似于view和controlle


根据项目需要,研究了一下如何在ASP.NETMVC下实现批量文件上传。首先,介绍单文件上传;然后,介绍多文件上传如何实现。

一、单文件上传

单文件上传的原理是将文件数据放入request中,由页面直接传递至后台controller中,类似于view和controller之间传参数,直接贴上代码加注释。
Upload.aspx文件中的代码:

<form enctype="multipart/form-data" method="post">
 <input type="file" id="file" />
 <input type="submit" value="上传" />
</form>

Controller中代码:

[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
 file = Request.Files[0]; //服务器上的UpLoadFile文件夹必须有读写权限
 string target = Server.MapPath("/")+("/Mock/Learning/");//取得目标文件夹的路径
 string filename = file.FileName;//取得文件名字
 string path = target + filename;//获取存储的目标地址
 file.SaveAs(path);}
 return View();
}


这里需要注意的是,在ASP.NET中,request的默认大小为4M,因此,如需上传较大文件,需要更改Web.config。

<system.web>
  <httpRuntime maxRequestLength="40960"/> 
</system.web>

二、批量文件上传

思路是通过js根据用户需求动态添加上传控件,多个文件通过request一并上传至controller。
Upload.aspx文件中的代码:

<form enctype="multipart/form-data" method="post">
 <div id="FileList">
 <div>
 <input type="file" id="file" name="file0"/>
 </div>
 </div>
 <p>
 <a onclick="AddFile();">添加文件</a>
 </p>
 <p>
 <input type="submit" value="上传" />
 </p>
</form>

<script>
var index = 1; 
function AddFile() { 
 var ul = document.getElementById("FileList");
 var inputDiv = document.createElement("div");
 inputDiv.setAttribute("Id", "div" + index);
 var file = document.createElement("input");
 file.setAttribute("type", "file");
 file.setAttribute("id", "file" + index);
 file.setAttribute("name", "file" + index);
 var btnDel = document.createElement("input");
 btnDel.setAttribute("type", "button");
 btnDel.setAttribute("value", "删除");
 btnDel.setAttribute("Id", index);
 btnDel.onclick = function() {
 inputDiv.removeChild(file);
 inputDiv.removeChild(btnDel);
 ul.removeChild(inputDiv);
 } 
 inputDiv.appendChild(file);
 inputDiv.appendChild(btnDel);
 ul.appendChild(inputDiv);
 index++;
}
</script>

Controller中的代码:

[HttpPost] 
public ActionResult Upload(FormCollection form) 
{ 
 foreach (string item in Request.Files)
 { 
 HttpPostedFileBase file = Request.Files[item] as HttpPostedFileBase; 
 if (file==null || file.ContentLength == 0)
 continue; 
 //判断Upload文件夹是否存在,不存在就创建
 string path = Server.MapPath("..//Upload"); 
 if (!System.IO.Directory.Exists(path)) 
 { 
 System.IO.Directory.CreateDirectory(path); 
 } 
 path = AppDomain.CurrentDomain.BaseDirectory + "Upload/"; 
 //获取上传的文件名 
 string fileName = file.FileName; 
 //上传 
 file.SaveAs(Path.Combine(path,fileName)); 
 } 
 return Content("<script>alert('上传文件成功');window.history.back();</script>"); 
}

注意在Request.Files中,不同文件的index是上传控件的name属性值,因此在aspx页面代码中必须保证多个上传控件的name属性值互不相同。

以上便实现了批量文件上传。

本人才疏学浅,仅供大家参考,若有不当之处,请大家批评指正!

文档

ASP.NET MVC实现批量文件上传

ASP.NET MVC实现批量文件上传:根据项目需要,研究了一下如何在ASP.NETMVC下实现批量文件上传。首先,介绍单文件上传;然后,介绍多文件上传如何实现。 一、单文件上传 单文件上传的原理是将文件数据放入request中,由页面直接传递至后台controller中,类似于view和controlle
推荐度:
标签: ASP.NET
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top