protected void Button1_Click(object sender, EventArgs e)
  {

  1. /*
  2. 微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite
  3. 下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。
  4. 代码如下:
  5. */
  6. Response.ContentType = "application/x-zip-compressed";
  7. Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");
  8. string filename = Server.MapPath("DownLoad/aaa.zip");
  9. Response.TransmitFile(filename);

}

//WriteFile实现下载
  protected void Button2_Click(object sender, EventArgs e)
  {

  1. /*
  2. using System.IO;
  3. */
  4. string fileName ="aaa.zip";//客户端保存的文件名
  5. string filePath=Server.MapPath("DownLoad/aaa.zip");//路径
  6. FileInfo fileInfo = new FileInfo(filePath);
  7. Response.Clear();
  8. Response.ClearContent();
  9. Response.ClearHeaders();
  10. Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
  11. Response.AddHeader("Content-Length", fileInfo.Length.ToString());
  12. Response.AddHeader("Content-Transfer-Encoding", "binary");
  13. Response.ContentType = "application/octet-stream";
  14. Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
  15. Response.WriteFile(fileInfo.FullName);
  16. Response.Flush();
  17. Response.End();

}

//WriteFile分块下载
  protected void Button3_Click(object sender, EventArgs e)
  {

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

}

//流方式下载
  protected void Button4_Click(object sender, EventArgs e)
  {

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

}

转载原文:http://www.cnblogs.com/weixing/archive/2012/02/27/2369567.html

文件下载 .net的更多相关文章

  1. Android 浏览器 —— 使用 WebView 实现文件下载

    对当前的WebView设置下载监听 mCurrentWebView.setDownloadListener(new DownloadListener() { @Override public void ...

  2. C# 文件下载 : WinINet

    在 C# 中,除了 WebClient 我们还可以使用一组 WindowsAPI 来完成下载任务.这就是 Windows Internet,简称 WinINet.本文通过一个 demo 来介绍 Win ...

  3. ASP.net MVC 文件下载的几种方法(欢迎讨论)

    在ASP.net MVC 中有几种下载文件的方法 前提:要下载的文件必须是在服务器目录中的,至于不在web项目server目录中的文件下载我不知道,但是还挺想了解的. 第一种:最简单的超链接方法,&l ...

  4. 让IIS7.0.0.0支持 .iso .7z .torrent .apk等文件下载的设置方法

    IIS默认支持哪些MIME类型呢,我们可以这样查看:打开IIS管理器(计算机--管理--服务和应用程序--Internet信息服务(IIS)管理器:或者Win+R,输入inetmgr,Enter),在 ...

  5. Android中使用AsyncTask实现文件下载以及进度更新提示

    Android提供了一个工具类:AsyncTask,它使创建需要与用户界面交互的长时间运行的任务变得更简单.相对Handler来说AsyncTask更轻量级一些,适用于简单的异步处理,不需要借助线程和 ...

  6. 利用Tomcat内置的servlet实现文件下载功能

    起因 最近博客所在的VPS挂了又要重装系统,又要重装各种软件. 以前我也经常更换VPS,每次更换都是各种坑爹事情..比如要下载java.下载tomcat.下载mysql..........以前每次我都 ...

  7. 多个文件下载打包生成zip格式下载

    这个多个文件下载生成zip格式必须先引用一个ICSharpCode.SharpZipLib.dll. 代码如下  //将多个文件打包成压缩文件zip格式下载         protected voi ...

  8. .net一般处理程序(httphandler)实现文件下载功能

    Handler文件代码如下: public class MDMExporterWeb : IHttpHandler { public void ProcessRequest(HttpContext c ...

  9. asp.net 文件下载(txt,rar,pdf,word,excel,ppt)

    aspx 文件下载说起来一点都不难,但是在做的过程中还是遇到了一些小小的问题,就是因为这些小小的问题,导致解决起来实在是太难了,其中一个就是Response.End();导致下载文件出现线程终止的情况 ...

  10. JavaScript多文件下载

    对于文件的下载,可以说是一个十分常见的话题,前端的很多项目中都会有这样的需求,比如 highChart 统计图的导出,在线图片编辑中的图片保存,在线代码编辑的代码导出等等.而很多时候,我们只给了一个链 ...

随机推荐

  1. codeforces 632F. Magic Matrix

    题目链接 给一个n*n的矩阵, 问是否对角线上的元素全都为0, a[i][j]是否等于a[j][i], a[i][j]是否小于等于max(a[i][k], a[j][k]), k为任意值. 前两个都好 ...

  2. hdu 1806 Frequent values 线段树

    题目链接 给一个非递减数列, n个数, m个询问, 每个询问给出区间[L, R], 求这个区间里面出现次数最多的数的次数. 非递减数列, 这是最关键的一个条件... 需要保存一个区间最左边的数, 最右 ...

  3. VS2010/MFC对话框:颜色对话框

    颜色对话框 在上一节中为大家讲解了字体对话框的使用方法,熟悉了字体对话框,本节继续讲另一种通用对话框--颜色对话框. 颜色对话框大家肯定也不陌生,我们可以打开它选择需要的颜色,简单说,它的作用就是用来 ...

  4. 在wdcp环境下架设VSFTPD虚拟用户只上传功能服务器

    检查系统是否已安装vsftp rpm -q vsftpd package vsftpd is not installed #说明系统没有安装vsftpd 如果生成虚拟用户数据文件的时候出现以下错误 u ...

  5. Java经典问题算法大全

    /*[程序1] 题目:古典问题:有一对兔子.从出生后第3个月起每一个月都生一对兔子.小兔子长到第三个月后每一个月又生一对兔子,假如兔子都不死.问每一个月的兔子总数为多少?  1.程序分析: 兔子的规律 ...

  6. window 7 改变窗口颜色

    对于刚刚重新安装的window7系统的盆友来说,不能改变窗口的颜色,和别人的window7窗口颜色和样子不一样和不好玩,那么我教大家,如何更改窗口颜色. 首先,重装的系统用软件激活之后,肯定还没还得急 ...

  7. Eclipse怎么全局搜索替换(整个项目)

    链接地址:http://jingyan.baidu.com/article/3ea51489c1c0d752e61bba2e.html 我们用Eclipse编程,有时候需要将整个项目的某个字符串替换成 ...

  8. 在C#调用C++的DLL方法(二)生成托管的DLL

    写操作之前,还是扼要的说一下托管与非托管C++的区别好了,其实我也并没有深入了解过托管C++的特点所在,其最大的特征就是可以由系统来调试回收相关的代码资源,跟C#的特性一样,只是编程风格跟C++类似而 ...

  9. Lucence.Net学习+盘古分词

    创建索引库          //读取文件,存储到索引库           public string CreateDatebase()         {         //获取索引库的路径   ...

  10. html5 geolocation API

    清单 1. 检查浏览器支持性if (navigator.geolocation) 清单 2. 单次定位请求 API void getCurrentPosition(updateLocation, op ...