博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET 下载文件方式
阅读量:6502 次
发布时间:2019-06-24

本文共 2754 字,大约阅读时间需要 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();  }

  

转载于:https://www.cnblogs.com/ZaraNet/p/9434020.html

你可能感兴趣的文章
JPA增删改查,
查看>>
apache 开启 gzip 压缩服务
查看>>
python mysql
查看>>
开源 免费 java CMS - FreeCMS1.5-建站向导
查看>>
Selenium的延迟等待
查看>>
jquery 1.6以上版本 全选
查看>>
AppCan 学习
查看>>
flask框架
查看>>
《疯狂Java讲义》学习笔记(十)异常处理
查看>>
Lua(Codea) 中 table.insert 越界错误原因分析
查看>>
ELK 5.x日志分析 (二) Elasticserach 5.2 安装
查看>>
一次奇怪的AP注册异常问题处理
查看>>
TableStore: 海量结构化数据分层存储方案
查看>>
Unity 4.x游戏开发技巧集锦(内部资料)
查看>>
自适应网页设计
查看>>
获取BT节点信息bittorrent-discovery
查看>>
Centos 7使用vsftpd搭建FTP服务器
查看>>
linux下SVN不允许空白日志提交
查看>>
第2周第1课
查看>>
山寨c 标准库中的getline 函数
查看>>