1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
  8. using System.Web.UI.WebControls.WebParts;
  9. using System.Web.UI.HtmlControls;
  10. using System.IO;
  11.  
  12. public partial class _Default : System.Web.UI.Page
  13. {
  14. protected void Page_Load(object sender, EventArgs e)
  15. {
  16.  
  17. }
  18.  
  19. //TransmitFile实现下载
  20. protected void Button1_Click(object sender, EventArgs e)
  21. {
  22. Response.ContentType = "application/x-zip-compressed";
  23. Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");
  24. string filename = Server.MapPath("DownLoad/z.zip");
  25. Response.TransmitFile(filename);
  26. }
  27.  
  28. //WriteFile实现下载
  29. protected void Button2_Click(object sender, EventArgs e)
  30. {
  31. string fileName ="asd.txt";//客户端保存的文件名
  32. string filePath=Server.MapPath("DownLoad/aaa.txt");//路径
  33.  
  34. FileInfo fileInfo = new FileInfo(filePath);
  35. Response.Clear();
  36. Response.ClearContent();
  37. Response.ClearHeaders();
  38. Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
  39. Response.AddHeader("Content-Length", fileInfo.Length.ToString());
  40. Response.AddHeader("Content-Transfer-Encoding", "binary");
  41. Response.ContentType = "application/octet-stream";
  42. Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
  43. Response.WriteFile(fileInfo.FullName);
  44. Response.Flush();
  45. Response.End();
  46. }
  47.  
  48. //WriteFile分块下载
  49. protected void Button3_Click(object sender, EventArgs e)
  50. {
  51. string fileName = "aaa.txt";//客户端保存的文件名
  52. string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
  53.  
  54. System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
  55.  
  56. if (fileInfo.Exists == true)
  57. {
  58. const long ChunkSize = ;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
  59. byte[] buffer = new byte[ChunkSize];
  60.  
  61. Response.Clear();
  62. System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
  63. long dataLengthToRead = iStream.Length;//获取下载的文件总大小
  64. Response.ContentType = "application/octet-stream";
  65. Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fil eName));
  66. while (dataLengthToRead > && Response.IsClientConnected)
  67. {
  68. int lengthRead = iStream.Read(buffer, , Convert.ToInt32(ChunkSize));//读取的大小
  69. Response.OutputStream.Write(buffer, , lengthRead);
  70. Response.Flush();
  71. dataLengthToRead = dataLengthToRead - lengthRead;
  72. }
  73. Response.Close();
  74. }
  75. }
  76.  
  77. //流方式下载
  78. protected void Button4_Click(object sender, EventArgs e)
  79. {
  80. string fileName = "aaa.txt";//客户端保存的文件名
  81. string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
  82.  
  83. //以字符流的形式下载文件
  84. FileStream fs = new FileStream(filePath, FileMode.Open);
  85. byte[] bytes = new byte[(int)fs.Length];
  86. fs.Read(bytes, , bytes.Length);
  87. fs.Close();
  88. Response.ContentType = "application/octet-stream";
  89. //通知浏览器下载文件而不是打开
  90. Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fi leName, System.Text.Encoding.UTF8));
  91. Response.BinaryWrite(bytes);
  92. Response.Flush();
  93. Response.End();
  94. }
  95. }

C#实现下载的几种方式举例的更多相关文章

  1. svn插件下载的两种方式

     1.下载SVN插件     SVN插件下载地址及更新地址,你根据需要选择你需要的版本.现在最新是1.8.x  Links for 1.8.x Release:          Eclipse up ...

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

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

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

    测试时我以字符流的形式下载文件,可行,前几个仅作参考 protected void Button1_Click(object sender, EventArgs e)  {  /*  微软为Respo ...

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

    protected void Button1_Click(object sender, EventArgs e) { /* 微软为Response对象提供了一个新的方法TransmitFile来解决使 ...

  5. asp.net 下载的几种方式

    protected void Button1_Click(object sender, EventArgs e)  {  /*  微软为Response对象提供了一个新的方法TransmitFile来 ...

  6. js 前端实现文件流下载的几种方式

    后端是用Java写的一个下载的接口,返回的是文件流,需求:点击,请求,下载 利用iframe实现文件流下载 //把上一次创建的iframe删掉,不然随着下载次数的增多页面上会一堆的iframe var ...

  7. Asp.Net 下载文件的几种方式

    asp.net下载文件几种方式 protected void Button1_Click(object sender, EventArgs e) { /* 微软为Response对象提供了一个新的方法 ...

  8. Quartus 11.0 的AS 下载方式和JTAG下载jic文件的方式

    FPGA下载的三种方式:主动配置方式(AS)和被动配置方式(PS)和最常用的(JTAG)配置方式: AS由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程,EPCS系列.如EPCS1,EP ...

  9. C# Net MVC 大文件下载几种方式、支持速度限制、资源占用小

    上一篇我们说到大文件的分片下载.断点续传.秒传,有的博友就想看分片下载,我们也来总结一下下载的几种方式,写的比较片面,大家见谅^_^. 下载方式: 1.html超链接下载: 2.后台下载(四种方法:返 ...

随机推荐

  1. .NET-架构优化实战-梳理篇

    原文:.NET-架构优化实战-梳理篇 前言 程序员输出是他敲写的代码,那么输入就是他思考好的设计.因此不做设计是不存在,设计只分优秀的设计和糟糕的设计.为了避免过度设计浪费成本,需要针对现有业务与问题 ...

  2. zxing的使用及优化

    二维码介绍 zxing项目是谷歌推出的用来识别多种格式条形码的开源项目,项目地址为https://github.com/zxing/zxing,zxing有多个人在维护,覆盖主流编程语言,也是目前还在 ...

  3. 与Qt的联系方式:邮件,论坛,销售,Bug报告

    If you want to learn more about upcoming things for Qt, please stay tuned for new blog posts and web ...

  4. Expression Blend 的点滴(1)--ListBox华丽大变身

    原文:Expression Blend 的点滴(1)--ListBox华丽大变身 最近,在园子里有不少朋友写了关于Blend的优秀并且实用的文章,在此,我先代表silverlight的爱好者感谢他们的 ...

  5. 高并发測试工具webbench

    1.简单介绍 webbench最多能够模拟3万个并发连接去測试server的负载能力.编译和配置简单,仅基于TCP协议上对server进行測试. Webbench也是开放源代码.从代码上看,每一个cl ...

  6. matplotlib tricks(一)—— 多类别数据的 scatter(cmap)

    cmap 的选择: binary seismic Reds 多类别数据的 scatter(逐点散列),在 matplotlib 中的实现关键在于,color关键字的定义: def plot_scatt ...

  7. 从vue1迁移到vue2踩到的两个坑

    先说第一个,在vue1中用v-for的时候,习惯性用$index和$key来取键.今天迁移到vue2之前,也知道vue2里不能这样用了,结果还是出问题了, 数据渲染不出来. <li v-for= ...

  8. Struts2——(2)配置文件、通配符

    一.Struts配置文件 (1)struts-default.xml(框架自带) 定义了一些框架自带的Result组件,拦截器组件. <package name="struts-def ...

  9. Android的DDMS中的Threads的各个字段的含义

    在使用DDMS调试代码时,Threads窗口中各个字段的含义从网上搜了下,如下所示: 该标签页显示了如下信息: ID – a VM-assigned unique thread ID. In Dalv ...

  10. 【转】解决yum安装软件报Couldn't resolve host 'mirrorlist.centos.org问题

    转自:http://blog.51cto.com/oldcat1981/1719825     今天在linux环境通过yum安装软件报了以下错误: [root@multi-mysql yum.rep ...