首页 > 网络编程 > ASP.NET > 正文

ASP.NET MVC实现批量文件上传_实用技巧

2018-10-12 16:22:03

根据项目需要,研究了一下如何在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
  • 本文发布HTML5中文学习网 ,转载请注明出处,感谢您!
  • 相关文章


  • 曝网友假装外国人写投诉信 ofo秒退押金并回函致歉
  • 苹果市值缩水逾2000亿美元 遭多家投行下调目标价
  • Asp.net Core与类库读取配置文件信息的方法_实用技巧
  • asp.net在Repeater嵌套的Repeater中使用复选框详解_实用技巧
  • 利用IIS调试ASP.NET网站程序的完整步骤_实用技巧
  • Asp.Net Core轻松学习系列之配置文件_实用技巧
  • ASP.NET 页生命周期概述(小结)_实用技巧
  • 详解ASP.NET Core WebApi 返回统一格式参数_实用技巧
  • 2018年网络流行语有哪些?2018年十大网络流行语盘点
  • 华为首席财务官孟晚舟被暂扣 深圳市政府要求加方立即放人!
  • 独孤九贱(4)_PHP视频教程

    江湖传言:PHP是世界上最好的编程语言。真的是这样吗?这个梗究竟是从哪来的?学会本课程,你就会明白了。 PHP中文网出品的PHP入门系统教学视频,完全从初学者的角度出发,绝不玩虚的,一切以实用、有用...

    独孤九贱(5)_ThinkPHP5视频教程

    ThinkPHP是国内最流行的中文PHP开发框架,也是您Web项目的最佳选择。《php.cn独孤九贱(5)-ThinkPHP5视频教程》课程以ThinkPHP5最新版本为例,从最基本的框架常识开始,将...

    独孤九贱(1)_HTML5视频教程

    《php.cn原创html5视频教程》课程特色:php中文网原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了HTML知识。 ...

    ThinkPHP5实战之[教学管理系统]

    本套教程,以一个真实的学校教学管理系统为案例,手把手教会您如何在一张白纸上,从零开始,一步一步的用ThinkPHP5框架快速开发出一个商业项目。

    PHP入门视频教程之一周学会PHP

    所有计算机语言的学习都要从基础开始,《PHP入门视频教程之一周学会PHP》不仅是PHP的基础部分更主要的是PHP语言的核心技术,是学习PHP必须掌握的内容,任何PHP项目的实现都离不开这部分的内容,通...

    作者信息

    kevin

    永远在学习的路上!

    相关教程

  • javascript初级视频教程 javascript初级视频教程
  • jquery 基础视频教程 jquery 基础视频教程
  • javascript三级联动视频教程 javascript三级联动视频教程
  • 独孤九贱(3)_JavaScript视频教程 独孤九贱(3)_JavaScript视频教程
  • 独孤九贱(6)_jQuery视频教程 独孤九贱(6)_jQuery视频教程
  • 热门教程