无为清净楼资源网 Design By www.qnjia.com
根据项目需要,研究了一下如何在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属性值互不相同。
以上便实现了批量文件上传。
本人才疏学浅,仅供大家参考,若有不当之处,请大家批评指正!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
无为清净楼资源网 Design By www.qnjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
无为清净楼资源网 Design By www.qnjia.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月16日
2024年11月16日
- 魔兽世界wlk恶魔术士一键输出宏是什么 wlk恶魔术士一键输出宏介绍
- 医学爱好者狂喜:UP主把医学史做成了格斗游戏!
- PS5 Pro评分解禁!准备升级入手吗?
- 我们盘点了近期火热的国产单机游戏!《琉隐神渡》等 你期待哪款?
- 2019年第12届广州影音展双碟纪念版ADMS2CD[MP3/WAV]
- 黄安《救姻缘》台首版[WAV+CUE]
- 模拟之声慢刻CD《柏林之声4》[正版CD低速原抓WAV+CUE]
- 李宗盛 《李宗盛经典金曲》[WAV+CUE][1G]
- 周华健《粤语精选》[WAV+CUE][1G]
- 蔡婧2024《天空》HQCDII头版限量编号[WAV+CUE][1G]
- 陈奂仁.2011-谁是陈奂仁【BBS】【FLAC分轨】
- 群星.2024-幻乐森林影视原声带【韶愔音乐】【FLAC分轨】
- 黎明.1999-向往金色的黎明新歌+精选2CD【环球】【WAV+CUE】
- 发烧女声Méav《美芙的祈祷》发烧女声 [WAV+CUE][820M]
- 雷婷 《我的爱回不来》紫银合金AQCD [WAV+CUE][1G]