1. // 方法一:TransmitFile实现下载
  2. protected void Button1_Click(object sender, EventArgs e)
  3. {
  4. Response.ContentType = "application/x-zip-compressed";
  5. Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");
  6. string filename = Server.MapPath("DownLoad/z.zip");
  7. Response.TransmitFile(filename);
  8. } 

ontentType 属性指定响应的 HTTP 内容类型。如果未指定 ContentType,默认为 text/HTML。

语法 Response.ContentType [= ContentType ] 参数 ContentType 描述内容类型的字符串。该字符串通常被格式化为类型/子类型,其中类型是常规内容范畴而子类为特定内容类型。

 

  1. // 方法二:WriteFile实现下载
  2. protected void Button2_Click(object sender, EventArgs e)
  3. {
  4. string fileName = "asd.txt";//客户端保存的文件名
  5. string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
  6.  
  7. FileInfo fileInfo = new FileInfo(filePath);
  8. Response.Clear();
  9. Response.ClearContent();
  10. Response.ClearHeaders();
  11. Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
  12. Response.AddHeader("Content-Length", fileInfo.Length.ToString());
  13. Response.AddHeader("Content-Transfer-Encoding", "binary");
  14. Response.ContentType = "application/octet-stream";
  15. Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
  16. Response.WriteFile(fileInfo.FullName);
  17. Response.Flush();
  18. Response.End();
  19. }

 response.write的意思是返回一个消息给其它页面也可以,当前页面也行的。

  1. // 方法三:WriteFile分块下载
  2. protected void Button3_Click(object sender, EventArgs e)
  3. {
  4. string fileName = "aaa.txt";//客户端保存的文件名
  5. string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
  6.  
  7. System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
  8.  
  9. if (fileInfo.Exists == true)
  10. {
  11. const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
  12. byte[] buffer = new byte[ChunkSize];
  13.  
  14. Response.Clear();
  15. System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
  16. long dataLengthToRead = iStream.Length;//获取下载的文件总大小
  17. Response.ContentType = "application/octet-stream";
  18. Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));
  19. while (dataLengthToRead > 0 && Response.IsClientConnected)
  20. {
  21. int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小
  22. Response.OutputStream.Write(buffer, 0, lengthRead);
  23. Response.Flush();
  24. dataLengthToRead = dataLengthToRead - lengthRead;
  25. }
  26. Response.Close();
  27. }
  28. }

  

  1. // 方法四:流方式下载
  2. protected void Button4_Click(object sender, EventArgs e)
  3. {
  4. string fileName = "aaa.txt";//客户端保存的文件名
  5. string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
  6.  
  7. //以字符流的形式下载文件
  8. FileStream fs = new FileStream(filePath, FileMode.Open);
  9. byte[] bytes = new byte[(int)fs.Length];
  10. fs.Read(bytes, 0, bytes.Length);
  11. fs.Close();
  12. Response.ContentType = "application/octet-stream";
  13. //通知浏览器下载文件而不是打开
  14. Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
  15. Response.BinaryWrite(bytes);
  16. Response.Flush();
  17. Response.End();
  18.  
  19. }

  

asp.net 浏览器下载文件的四种方式的更多相关文章

  1. C#从服务器下载文件的四种方式

    //方法一:TransmitFile实现下载 string fileName = "ss.docx"; //客户端预设的文件名,导出时可修改  string filePath = ...

  2. linux服务器之间传输文件的四种方式

    linux文件传输在内网渗透中至关重要,所以我在此总结一下几种Linux服务器之间传输文件的四种方式 1. scp [优点]简单方便,安全可靠:支持限速参数[缺点]不支持排除目录[用法]scp就是se ...

  3. java读取XML文件的四种方式

    java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...

  4. 从后端接口下载文件的2种方式:get方式、post方式

    从后端接口下载文件的2种方式 一.get方式 直接使用: location.href='http://www.xxx.com/getFile?params1=xxx&params2=xxxx' ...

  5. 【文件下载】Java下载文件的几种方式

    [文件下载]Java下载文件的几种方式  摘自:https://www.cnblogs.com/sunny3096/p/8204291.html 1.以流的方式下载. public HttpServl ...

  6. linux创建文件的四种方式(其实是两种,强行4种)

    linux创建文件的四种方式: 1.vi newfilename->i->编辑文件->ESC->:wq! 2.touch newfilename 3.cp sourcePath ...

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

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

  8. C# 下载文件的四种方法

    C# 文件下载四方法 - CSDN论坛 - CSDN.NET using System; using System.Data; using System.Configuration; using Sy ...

  9. 解析xml文件的四种方式

    什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没 ...

随机推荐

  1. iOS DES ECB 模式加密

    //iOS DES ECB 模式加密 #import <CommonCrypto/CommonCryptor.h> ,,,,,,,}; +(NSString *) encryptUseDE ...

  2. 微软BI 之SSRS 系列 - 在 Cube 中通过 MDX 查询实现基于父子递归关系的汇总报表

    之前我写了一篇在 SSRS 开发中处理这种父子关系的汇总与聚合的文章 (SSRS 系列 - 使用分组 Group 属性实现基于父子递归关系的汇总报表),示例中的查询是基于 SQL Server 关系型 ...

  3. 使用sphinx自动提取python中的注释成为接口文档

    写好了代码,交付给他人使用的时候,查看代码固然可以了解各类和函数的功能细节,但接口文档能更方便的查找和说明功能.所以,一价与代码同步的接口文档是很有必要的.sphinx可以根据python中的注释,自 ...

  4. java线程同步实的现方式

    为何要使用同步? java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他 ...

  5. 使用 axios 详解

    Vue.js 1.0 我们常使用 vue-resource (官方ajax库), Vue 2.0 发布后作者宣告不再对 vue-resource 进行更新, 推荐我们使用 axios (基于 Prom ...

  6. Hibernate学习笔记四:事务管理

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6768298.html  一:需要事务的Session操作 Session操作中,查询类操作是不需要事务就能生效 ...

  7. 【shell】创建长目录,目录存在则忽略,缺失则创建

    有时候,我们需要创建一个空目录树,如果给定路径包含目录,那么还必须检查这些目录是否存在: mkdir –p /qinys/oliver/tmp/ 执行上述命令即可创建长目录,并且有则忽略,无则创建原则 ...

  8. 【Linux】函数与参数

    函数的定义 函数的定义包括function命令.函数名.开/闭括号包括以及包含在一对花括号中的函数体. (1) 函数定义 function fname() { Statements; } 或者 fna ...

  9. 微服务(Microservice)那点事

    WHAT - 什么是微服务 微服务简介 这次参加JavaOne2015最大的困难就是听Microservice相关的session,无论内容多么水,只要题目带microservice,必定报不上名,可 ...

  10. ios中网络请求缓存

    #import <Foundation/Foundation.h> #import "ASIFormDataRequest.h" @protocol NetWorkde ...