当前位置: 首页 > 编程笔记 >

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

谭新知
2023-03-14
本文向大家介绍ASP.NET MVC实现批量文件上传,包括了ASP.NET MVC实现批量文件上传的使用技巧和注意事项,需要的朋友参考一下

根据项目需要,研究了一下如何在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属性值互不相同。

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Python实现批量下载文件,包括了Python实现批量下载文件的使用技巧和注意事项,需要的朋友参考一下 Python实现批量下载文件 其他网友的方法: 以上便是本文给大家分享的全部内容了,小伙伴们可以测试下哪种方法效率更高呢。

  • 本文向大家介绍python实现批量文件重命名,包括了python实现批量文件重命名的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python批量文件重命名的具体代码,供大家参考,具体内容如下 问题描述 最近遇到朋友求助,如何将大量文件名前面的某些字符删除。 即将图中文件前的编号删除。 Python实现 用到了python中的os模块,os模块中的rename方法可以实现对文件的重命

  • 本文向大家介绍PowerShell实现批量重命名文件,包括了PowerShell实现批量重命名文件的使用技巧和注意事项,需要的朋友参考一下 假设你有一个很大的文件夹,里面全是图片,你想对文件夹中图片的名称,按照某个统一的规则进行重命名,本文的脚本会简单进行演示: 文件夹中所有的JPG文件都被重命名过了,新的图片文件名形如”pic_”和一个6位的数字,你根据这个模板稍加改装,可以完成更加丰富的自定义

  • 本文向大家介绍jquery插件uploadify实现带进度条的文件批量上传,包括了jquery插件uploadify实现带进度条的文件批量上传的使用技巧和注意事项,需要的朋友参考一下 有时项目中需要一个文件批量上传功能时,个人认为uploadify是快速简便的解决方案,分享给大家供大家参考,具体如下 先上效果图: 具体代码如下: 在页面中如下 完整页面代码 UploadHandler.ashx代码

  • 本文向大家介绍JS实现批量上传文件并显示进度功能,包括了JS实现批量上传文件并显示进度功能的使用技巧和注意事项,需要的朋友参考一下 今天接受项目中要完成文件批量上传文件而且还要显示上传进度,一开始觉得这个应该不是很麻烦,当我在做的时候遇到了很多问题,很头疼啊。 不过看了别人写的代码,自己也测试过,发现网上好多都存在一些问题,并不是自己想要的。然后自己查阅各种资料,经过自己总结,最终完成了这个功能。

  • 本文向大家介绍Node.js实现批量去除BOM文件头,包括了Node.js实现批量去除BOM文件头的使用技巧和注意事项,需要的朋友参考一下 之前的同事写了一个工具,但有bug,就是在替换文件后原文件的格式变成utf8 BOM了,这种带BOM的XML在Mac下可能读取不出来,所以就需要写个工具处理一下。 其实思路比较简单,首先遍历目录,然后读取目录,将文件头三个字节去除掉,然后保存为utf-8格式的