前言:

这几天做了一个从服务器端下载文件的功能,就把自己代码以及和网上的代码进行总结了下。通过服务端进行下载,一般浏览器会自动默认下载的路径,一般的话都会保存到C盘的下载的文件夹里。想要下载到客户端固定的文件夹,这个功能我没考虑,以后有时间看看吧。

不多说了直接上代码:


/// <summary>/// 第一种/// </summary>/// <returns></returns>public FileStreamResult Down(){string fileName = "aaa.xlsx";//客户端保存的文件名string filePath = Server.MapPath("~/DownFile/test.xlsx");//路径return File(new FileStream(filePath, FileMode.Open), "text/plain",fileName);//其中:“text/plain”是文件MIME类型}
/// <summary>/// 第二种/// </summary>/// <returns></returns>public FileResult Down1(){string filePath = Server.MapPath("~/DownFile/test.xlsx");//路径return File(filePath, "text/plain", "welcome.xlsx"); //welcome.txt是客户端保存的名字}/// <summary>/// 第三种/// </summary>public void Down2(){string fileName = "aaa.xlsx";//客户端保存的文件名string filePath = Server.MapPath("~/DownFile/test.xlsx");//路径FileInfo fileinfo = new FileInfo(filePath);Response.Clear();         //清除缓冲区流中的所有内容输出Response.ClearContent();  //清除缓冲区流中的所有内容输出Response.ClearHeaders();  //清除缓冲区流中的所有头Response.Buffer = true;   //该值指示是否缓冲输出,并在完成处理整个响应之后将其发送Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);Response.AddHeader("Content-Length", fileinfo.Length.ToString());Response.AddHeader("Content-Transfer-Encoding", "binary");Response.ContentType = "application/unknow";  //获取或设置输出流的 HTTP MIME 类型Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); //获取或设置输出流的 HTTP 字符集Response.TransmitFile(filePath);Response.End();}
/// <summary>/// 第四种/// </summary>public void Down3(){string fileName = "aaa.xlsx";//客户端保存的文件名string filePath = Server.MapPath("~/DownFile/test.xlsx");//路径System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);if (fileInfo.Exists == true){const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力byte[] buffer = new byte[ChunkSize];Response.Clear();System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);long dataLengthToRead = iStream.Length;//获取下载的文件总大小Response.ContentType = "application/octet-stream";Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));while (dataLengthToRead > 0 && Response.IsClientConnected){int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小Response.OutputStream.Write(buffer, 0, lengthRead);Response.Flush();dataLengthToRead = dataLengthToRead - lengthRead;}Response.Close();}}
//下载Zip文件
public void DownLoadZipFile(){string fileName = Request["fileName"];string path = Server.MapPath("/ExportZip/" + fileName + ".zip");//指定块大小long chunkSize = 204800;//建立一个200K的缓冲区byte[] buffer = new byte[chunkSize];//已读的字节数long dataToRead = 0;Response.Clear();Response.ClearContent();Response.ClearHeaders();Response.ContentType = "application/octet-stream";string encodeFileName = Path.GetFileName(path);if (Request.UserAgent.ToLower().IndexOf("msie") > -1)encodeFileName = HttpUtility.UrlPathEncode(encodeFileName);if (Request.UserAgent.ToLower().IndexOf("firefox") > -1)encodeFileName = "\"" + encodeFileName + "\"";elseencodeFileName = HttpUtility.UrlEncode(encodeFileName, System.Text.Encoding.UTF8);try{using (FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)){dataToRead = stream.Length;Response.AddHeader("Content-Disposition", "attachement;filename=" + encodeFileName);Response.AddHeader("Content-Transfer-Encoding", "binary");Response.AddHeader("Content-Length", dataToRead.ToString());while (dataToRead > 0){if (Response.IsClientConnected){int length = stream.Read(buffer, 0, Convert.ToInt32(chunkSize));Response.OutputStream.Write(buffer, 0, length);Response.Flush();buffer = new Byte[chunkSize];dataToRead = dataToRead - length;}elsedataToRead = -1;}}}catch (Exception){Response.Write("<script>alert('下载失败,请重试')</script>");}finally{//context.Response.Close();}}

结尾:

上面的代码都是经过我的实际测试的,完全可以实现功能,大家放心的使用,只需要根据你们的需求把文件名和文件路径改了就行

Asp.net MVC下载文件的四种方法以及下载ZIP文件的一种方法相关推荐

  1. Dataset之MNIST:自定义函数mnist.load_mnist根据网址下载mnist数据集(四个ubyte.gz格式数据集文件)

    Dataset之MNIST:自定义函数mnist.load_mnist根据网址下载mnist数据集(四个ubyte.gz格式数据集文件) 目录 下载结果 运行代码 下载结果 运行代码 mnist.py ...

  2. 关于ASP.NET MVC 项目在本地vs运行响应时间过长无法访问时,解决方法!

    关于ASP.NET MVC 项目在本地vs运行响应时间过长无法访问时,解决方法! 参考文章: (1)关于ASP.NET MVC 项目在本地vs运行响应时间过长无法访问时,解决方法! (2)https: ...

  3. python解压加密zip文件_Python:解压缩前检测一个zip文件否为加密,两种算法。

    前一篇文章介绍了如何用python自动解压缩加密的zip文件, 但是有一个问题,在服务器端脚本在解加密zip文件之前,需要检测其是否是加密文件,若是,则询问密码,结合密码解压缩:如果不是,则则直接解压 ...

  4. Essential Chart for ASP.NET MVC商业图表控件相关介绍及下载

    Essential Chart for ASP.NET MVC是一款功能强大的商业图表控件,提供了创新的数据对象模型可以很容易地与多种数据源进行绑定,提供了35种图表类型,支持2D和3D显示,多轴显示 ...

  5. C# ASP.NET MVC 图片上传的多种方式(存储至服务器文件夹,阿里云oss)

    图片上传时我们进场用到的一个功能今天将他整理了一下写了个demo希望对大家有用 该demo分为如下 1.上传至至服务器文件夹 2.上传至阿里云oss 3.百度webupload上传图片 效果图如下: ...

  6. [导入]ASP.NET MVC框架开发系列课程(3):URL导向.zip(16.66 MB)

    讲座内容: ASP.NET MVC框架中一个关键特性就是基于URL的导向.本次课程将讲解URL Routing机制的使用. 课程讲师: 赵劼 MSDN特邀讲师 赵劼(网名"老赵". ...

  7. python解压zip文件_Python中最快解压zip文件的方法

    假设现在的上下文(LCTT 译注:context,计算机术语,此处意为业务情景)是这样的:一个 zip 文件被上传到一个Web 服务中,然后 Python 需要解压这个 zip 文件然后分析和处理其中 ...

  8. php zip 不能创建文件,PHP无法访问新创建的zip文件

    我使用Laravel 5.2和 Zipper来创建ZIP存档并由用户下载.我认为这个问题通常与Laravel或Zipper没有严格的关系.脚步: >用户点击链接download_all. > ...

  9. python怎么解压rar文件_用Python解压缩rar、zip文件的方法

    玩蛇网本文为大家提供关于用Python解压缩rar.zip文件的方法源码.Python语言对文件方面的处理还是很方便的,例如以前有为大家介绍过Python读取分割压缩TXT文本文件的方法.Python ...

  10. java读取zip文件损坏_java – 如何检查生成的zip文件是否损坏?

    我们有一段代码在我们的系统上生成一个zip文件.一切都可以,但是有时这个ZIP文件被FilZip或WinZip打开时被认为是损坏的. 所以这里是我的问题:如果生成的zip文件已损坏,我们如何可以编程检 ...

最新文章

  1. java 重启系统_java 程序,实现重启功能。求大神帮忙,急
  2. Confluence 6 复杂授权或性能问题
  3. java callback 多线程_JAVA Callback效率测试
  4. Appium之开发计算器自动化测试脚本Demo
  5. 打包vue项目时报错:Expected indentation of 6 spaces but found 10
  6. 【工具】JAVA 在单元读取文件并比较
  7. git branch查看/删除分支
  8. 六、小程序|App抓包-移动端抓包app-抓包
  9. 英伟达显卡驱动历史版本
  10. 云服务器的安全防护措施一般有哪些?
  11. 微信商户号进件接口,错误之 重新确认最终受益人字段
  12. mac mini u盘安装系统_mac制作mac启动盘 mac u盘安装系统
  13. eighth day for learning
  14. Linux 云服务器aircrack-ng后台跑包并用邮件发送结果
  15. 【web素材】16—激发你开发灵感的十大创意网站菜单示例效果
  16. 吉林大学计算机研究生成绩计算方法,关于同济大学研究生成绩计算方法的说明...
  17. Mesosphere DCOS安装
  18. paddle 40 支持任意维度数据的梯度平衡机制GHM Loss的实现(支持ignore_index、class_weight,支持反向传播训练,支持多分类)
  19. HTML(二) -- 表格设计
  20. 数据可视化系列-05数据分析报告

热门文章

  1. Windbg基础-了解Symbols zz
  2. 20145213《Java程序设计》第五周学习总结
  3. 互联网基石:TCP/IP 四层模型,由浅入深直击原理!
  4. 《蔡康永的说话之道》读书笔记
  5. Ecshop模板开发(二十三):手机版显示商城
  6. 阿里巴巴B2B电商算法首次对外公开
  7. 阿里巴巴大数据之路-维度设计
  8. linux 显卡 1050ti,MAX-Q终于出中端卡了 GTX1050Ti MAX-Q显卡曝光
  9. 招投标异议与政府采购质疑二者差异大比拼,你必须掌握
  10. eval函数python原理_Python 中 eval 函数的神奇用法