1、直接使用Response.TransmitFile(filename)方法

    protected void Button_Click(object sender, EventArgs e){/*微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。代码如下:*/Response.ContentType = "application/x-zip-compressed";Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");string filename = Server.MapPath("DownLoad/aaa.zip");//将指定的文件直接写入 HTTP 响应输出流,而不在内存中缓冲该文件。
        Response.TransmitFile(filename);}

2、WriteFile实现下载

    protected void Button_Click(object sender, EventArgs e){/* using System.IO; */string fileName = "aaa.zip";//服务端保存的文件名string filePath = Server.MapPath("DownLoad/aaa.zip");//路径
System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);Response.Clear();Response.ClearContent();Response.ClearHeaders();Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);Response.AddHeader("Content-Length", fileInfo.Length.ToString());Response.AddHeader("Content-Transfer-Encoding", "binary");Response.ContentType = "application/octet-stream";Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");//将指定文件的内容作为文件块直接写入 HTTP 响应输出流。
        Response.WriteFile(fileInfo.FullName);Response.Flush();Response.End();}

3、WriteFile分块下载

    protected void Button_Click(object sender, EventArgs e){string fileName = "aaa.zip";//服务端保存的文件名string filePath = Server.MapPath("DownLoad/aaa.zip");//路径
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();}}

4、流方式下载

    protected void Button4_Click(object sender, EventArgs e){string fileName = "aaa.zip";//服务端保存的文件名string filePath = Server.MapPath("DownLoad/aaa.zip");//路径//以字符流的形式下载文件System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Open);byte[] bytes = new byte[(int)fs.Length];fs.Read(bytes, 0, bytes.Length);fs.Close();Response.ContentType = "application/octet-stream";//通知浏览器下载文件而不是打开Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));//将一个二进制字符串写入 HTTP 输出流
        Response.BinaryWrite(bytes);Response.Flush();Response.End();} 

Asp.Net 之 下载文件的常用方式相关推荐

  1. 解析:如何在 ASP.NET 中下载文件

    解析:如何在 ASP.NET 中下载文件 来源:博客园 作者:dotnetWalker 这是笔者常被问到的一个问题,如何通过ASP.NET来下载文件,这个问题可大可小,我们先从小的开始.当我们要让用户 ...

  2. 如何在 ASP.NET 中下载文件

    这是笔者常被问到的一个问题,如何通过ASP.NET来下载文件,这个问题可大可小,我们先从小的开始.当我们要让用户下载一个文件,最简单的方式是通过Response.Redirect指令: 殇﹖ ☆粉汐げ ...

  3. javascript下载文件几种方式,接收后台返回流下载或直接下载文件

    目录 1 javascript下载文件7中方式 1.1 window.location.href下载 1.2 window.location下载 1.3 iframe下载 1.4 form表单的形式下 ...

  4. asp.net下载文件几种方式

    本文转载自:http://www.cnblogs.com/weixing/archive/2012/02/27/2369567.html protected void Button1_Click(ob ...

  5. asp.net 浏览器下载文件的四种方式

    其实不是自己想要的,自己希望能够弹一个窗口出来选择保存的路径 protected void Button1_Click(object sender, EventArgs e){protected vo ...

  6. linux下载文件的常用命令wget

    wget是Linux最常用的下载命令, 一般的使用方法是: wget + 空格 + 要下载文件的url路径 例如: # wget http://www.linuxsense.org/xxxx/xxx. ...

  7. .net 下载文件几种方式

    方式一:TransmitFile实现下载.将指定的文件直接写入 HTTP 响应输出流,而不在内存中缓冲该文件. protected void Button1_Click(object sender, ...

  8. 秒杀迅雷的linux命令行下载文件以及常用工具:wget、Prozilla、MyGet、Linuxdown、Curl、Axel

    本文介绍常用的几种命令行式的下载工具:wget.Prozilla.MyGet.Linuxdown.Curl.Axel 下面就为大家详细介绍一下这些工具 1. Wget Wget是一个十分常用命令行下载 ...

  9. JS 下载文件两种方式总结

    后端返回Blob对象(文件流),完成导出.下载功能: 1.介绍Blob Blob Blob 对象表示一个不可变.原始数据的类文件对象.它的数据可以按文本或二进制的格式进行读取,也可以转换成 Reada ...

最新文章

  1. c语言编写弹窗提示是否确认退出_世人觉得C语言和C++太难?没前途?过来人告诉你真相...
  2. excel 怎么让数字不用科学计数法
  3. java反射三种_Java反射
  4. Debug Tensorflow: tensorflow.python.framework.errors_impl.InvalidArgumentError: OpKernel ‘ConcatV2‘
  5. python 异常函数调用栈_Python捕获异常堆栈信息的几种方法
  6. 【CodeForces - 485C】Bits (二进制相关,数学,贪心)
  7. HttpServletRequest中获取IP值
  8. Xcode6+Cocos2d-x真机调试 报错
  9. ado、odbc连接Postgre SQL
  10. java double 丢精度_Java中double类型精度丢失的问题
  11. 简易留言板HTML+JS代码
  12. win10网络共享打印机设置
  13. 电脑重装系统后c盘数据能恢复吗?
  14. zblog微信小程序模板-青春主题小程序免费开源模板
  15. java程序如何解代数方程_基于代数方程库Algebra.js解二元一次方程功能示例
  16. MAXON宣布任命高级领导人员
  17. 物理内存占用多少正常
  18. 计算机c语言lms算法,lms算法(毕业论文).doc
  19. 为什么有的大公司代码也很烂?
  20. 唐诗宋词 v1.5 软件下载 诗词库更新时间20090426 唐诗宋词三百首 GCLsoft

热门文章

  1. Oracle:ORA-12560和ORA-01031
  2. 社交网络用户并非越多越好
  3. VC++环境下获取当前输入法名称
  4. html列表的列选择事件,html5 datalist 选中option选项后的触发事件
  5. rust图形编程_国产编程语言“木兰”,你以为是个王者,结果是个玩笑
  6. oc 查看属性默认关键词
  7. 3位格雷码的顺序编码_FPGA 设计之 跨时钟域(四 - 格雷码)
  8. 自动化测试工具有哪些_软件测试工程师要具备哪些能力和技能?
  9. python爬取网易云音乐_Python 从零开始爬虫(七)——实战:网易云音乐评论爬取(附加密算法)...
  10. harmonyos能否移植到MCU,HarmonyOS(LiteOs_m) 官方例程移植到STM32初体验