博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net C#后台实现下载文件的几种方法
阅读量:6953 次
发布时间:2019-06-27

本文共 2793 字,大约阅读时间需要 9 分钟。

protected void Button1_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");  Response.TransmitFile(filename);  }  //WriteFile实现下载  protected void Button2_Click(object sender, EventArgs e)  {  /*  using System.IO;     */  string fileName ="aaa.zip";//客户端保存的文件名  string filePath=Server.MapPath("DownLoad/aaa.zip");//路径  FileInfo fileInfo = new 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");  Response.WriteFile(fileInfo.FullName);  Response.Flush();  Response.End();  }  //WriteFile分块下载  protected void Button3_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();  }  }  //流方式下载  protected void Button4_Click(object sender, EventArgs e)  {  string fileName = "aaa.zip";//客户端保存的文件名  string filePath = Server.MapPath("DownLoad/aaa.zip");//路径  //以字符流的形式下载文件  FileStream fs = new FileStream(filePath, 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));  Response.BinaryWrite(bytes);  Response.Flush();  Response.End();  }

 

 

本文转自 梦在旅途 博客园博客,原文链接:http://www.cnblogs.com/zuowj/archive/2013/04/17/Wheeky.html  ,如需转载请自行联系原作者

你可能感兴趣的文章
JMETER JDBC操作
查看>>
关于baseflight cleanflight naze32不能解锁的办法
查看>>
hihoCoder挑战赛28 题目3 : 树的方差
查看>>
第二阶段团队绩效考核报告
查看>>
关于转义字符的意义
查看>>
更改centos 7 的默认启动为命令界面
查看>>
nginx安装目录详解(针对centos)
查看>>
sublime汉化步骤记录
查看>>
Java笔记02——多线程
查看>>
ubuntu下mysql无法启动Couldn't find MySQL server (/usr/bin/mysqld_safe)”
查看>>
sleep函数——Gevent源码分析
查看>>
学习周总结
查看>>
通用窗口类 Inventory Pro 2.1.2 Demo1(下)
查看>>
第零次作业
查看>>
在阿里云服务器windows server2012r iis上部署.net网站
查看>>
为easyui添加多条件验证
查看>>
Linux mem/swap/buffers/cached 区别
查看>>
13 memcache服务检查
查看>>
go install之后没有生成bin目录的原因(环境变量GOBIN)
查看>>
uva 10441(poj 2337 欧拉通路)
查看>>