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 = ;//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 > && Response.IsClientConnected)
{
int lengthRead = iStream.Read(buffer, , Convert.ToInt32(ChunkSize));//读取的大小
Response.OutputStream.Write(buffer, , 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, , 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(); }

最新文章

  1. 用Python写一个简单的Web框架
  2. LL基本姿势
  3. 《从零开始做一个MEAN全栈项目》(2)
  4. PS技能大全
  5. KafkaSpout: PartitionManager的行为分析
  6. 基于新浪sae使用php生成图片发布图文微博
  7. Merge Into example
  8. U3D 2D游戏之黑暗纪元 2D游戏基础入门开发全(1)
  9. 利用Sails.js+MongoDB开发博客系统
  10. 敏捷开发(五)- 框架SCRUM内容
  11. 关于安装Windows Live Writer后,内存被占满情况解决
  12. Sql去重
  13. 重定向和servlet生命周期
  14. window nginx 基础命令
  15. CentOS7.4使用KVM
  16. (1)selenium-java环境搭建
  17. C语言窗口例子
  18. Python编程练习:使用 turtle 库完成玫瑰花的绘制
  19. [20190214]11g Query Result Cache RC Latches.txt
  20. 【NET Core】 缓存 MemoryCache 和 Redis

热门文章

  1. 使用SSH密钥方式登录ubuntu Linux,指令(ssh-keygen 和 ssh-copy-id)
  2. java集合框架——工具类
  3. C语言中头文件怎么写?(本文来源网络,由黑乌鸦进一步完善)
  4. 过河问题(POJ1700)
  5. vuejs动态组件和v-once指令
  6. 遍历ResultSet,行列要从1开始
  7. SQL随手记
  8. 第41章 RS-485通讯实验—零死角玩转STM32-F429系列
  9. Data Warehouse 业务系统不入仓表
  10. iOS中 XMPP即时通讯实现的主要步骤