1.前言

   文件导入导出是简单且常用的功能,以下示例实现了文件上传与下载的几种方法,如有不妥的地方,欢迎指正。小白一枚,在往目标前进。

2.1.文件上传    --    纯文件

 <form action="/Home/Index" method ="post" enctype="multipart/form-data" >
<input type="file" multiple/>
<input id="upload" type="submit" />
</form>
    [HttpPost]
public IActionResult Index(List<IFormFile> files)
{
foreach (var file in files)
{
//获取文件名
var fileName = file.FileName;
//保存在wwwroot文件夹下
fileName = hostingEnv.WebRootPath + $"\\{fileName}"; using (FileStream fs = System.IO.File.Create(fileName))
{
file.CopyTo(fs);
fs.Flush();
}
}
return View();
}

2.2.文件上传    --    多类型内容上传

对于这种不只有文件的表单,可以采用模型绑定的方式。

 <form action="/Home/Index" method ="post" enctype="multipart/form-data" > 
<input type="file" multiple/>
<input type="text" name="Name"/>
<input id="upload" type="submit" />
</form>
        /// <summary>
/// 表单上传文件
/// </summary>
/// <param name="files"></param>
/// <returns></returns>
[HttpPost]
public IActionResult Index(FormObject obj)
{
foreach (var file in obj.Files)
{
//获取文件名
var fileName = ContentDispositionHeaderValue
.Parse(file.ContentDisposition)
.FileName
.Trim('"');
fileName = hostingEnv.WebRootPath + $"\\{fileName}";
using (FileStream fs = System.IO.File.Create(fileName))
{
file.CopyTo(fs);
fs.Flush();
}
}
return View();
}
//模型类
public class FormObject {
public List<IFormFile> Files{ get; set; }
public string Name { get; set; }
}

2.3.文件上传  -- Ajax上传

    <input type="text" name="Name" value="123"/>
<input type="file" id="fileUpload" name="fileUpload" multiple/>
<input id="upload" type="button" value="ajax 提交"/>
<script type="text/javascript">
$(function () {
$("#upload").click(function (evt) {
///取选择的文件加入FormData中
var fileUpload = $("#fileUpload").get(0);
var files = fileUpload.files;
var data = new FormData();
for (var i = 0; i < files.length; i++) {
data.append(files[i].name, files[i]);
}
// data.append("Name", $('input[name="Name"]').val())
$.ajax({
type: "POST",
url: "http://192.168.0.175:8095/api/Organization",
contentType: false,
processData: false,
data: data,
success: function (message) {
alert(message);
},
error: function () {
alert("上传文件出现错误!");
}
});
});
});
</script>
        /// <summary>
/// 通过ajax上传
/// </summary>
/// <returns></returns>
public IActionResult UploadFiles()
{var files = Request.Form.Files;
var value =Request.Form.First(c => c.Key == "Name").Value;//获得表单文本项
foreach (var file in files)
{
var fileName = file.FileName;
fileName = hostingEnv.WebRootPath + $@"\{fileName}";using (FileStream fs = System.IO.File.Create(fileName))
{
file.CopyTo(fs);
fs.Flush();
}
}
return RedirectToAction("/Export", new { Title ="",Name = });
}

3.3.文件下载

        [HttpGet]
public IActionResult ExportText()
{ string sFileName = $@"qmhuangtext{DateTime.Now.ToString("yyyyMMddHHmmss")}.txt";
FileStream fs =new FileStream(sFileName,FileMode.OpenOrCreate);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("Hello world");
sw.Flush();
sw.Close();
fs.Close();
return File(new FileStream(sFileName, FileMode.Open), "application/octet-stream", $"导出测试{DateTime.Now.ToString("yyyyMMddHHmmss")}.txt");
}

最新文章

  1. 地理数据库 (Geodatabase) 版本管理
  2. SQL Saturday活动再起
  3. QuickFix/J 源代码
  4. Android 中的 Intent 简介
  5. Android Fragment 完全解析
  6. 新浪微博API开放平台进行程序开发第一步(java)
  7. [PCL]keypoint
  8. scala函数组合器
  9. RAC 环境下修改归档模式
  10. ContextLoaderListener初始化的前后文和DispatcherServlet初始化的上下文关系
  11. Android 5.0及以上版本使用webview不能存储第三方Cookies解决方案
  12. Android Service基础
  13. LxmlLinkExtractor类参数解析
  14. css块居中
  15. 2018 CCPC网络赛 几道数学题
  16. 尚硅谷springboot学习32-整合druid
  17. webservice restful一个小例子
  18. 2015,3,10 1(南阳理工ACM)
  19. Mysql使用information.shema.tables查询数据库表大小
  20. 核心一:IoC

热门文章

  1. redis启停
  2. Contextual Action bar(2) 简介,启动,各函数介绍
  3. 492 Construct the Rectangle 构建矩形
  4. rhel7使用centos7yum组件
  5. WIN2003 IIS相关错误解决方案
  6. Java_静态变量
  7. AJPFX关于一维数组的声明与初始化
  8. AJPFX关于java中可访问控制符和非访问控制符的详细总结
  9. [转]合理使用ArrayMap代替HashMap
  10. 算法之A星算法(寻路)