asp.net下载文件几种方式
本文转载自:http://www.cnblogs.com/weixing/archive/2012/02/27/2369567.html
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/itzhanghb/articles/4040763.html
asp.net下载文件几种方式相关推荐
- javascript下载文件几种方式,接收后台返回流下载或直接下载文件
目录 1 javascript下载文件7中方式 1.1 window.location.href下载 1.2 window.location下载 1.3 iframe下载 1.4 form表单的形式下 ...
- JS 下载文件两种方式总结
后端返回Blob对象(文件流),完成导出.下载功能: 1.介绍Blob Blob Blob 对象表示一个不可变.原始数据的类文件对象.它的数据可以按文本或二进制的格式进行读取,也可以转换成 Reada ...
- .net 下载文件几种方式
方式一:TransmitFile实现下载.将指定的文件直接写入 HTTP 响应输出流,而不在内存中缓冲该文件. protected void Button1_Click(object sender, ...
- asp.net下载的三种方式
Code protected void Button1_Click(object sender, EventArgs e) { /* 微软为Respon ...
- STM32_基础入门_程序下载的两种方式
一.ISP串口下载 1.所涉及工具:MDK+FlyMcu 2.硬件连接 3.连接步骤 1.搜索并选择对应串口 2.选择要下载的hex文件,将"编程前重装文件"打勾 3.勾选&quo ...
- C++包含头文件几种方式
该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105042381 包 ...
- python-网络图片下载(两种方式)
利用python进行网络图片下载(两种方式) 1:方式一 1:代码 # coding=utf-8 """ @author: jiajiknag 程序功能: 图片批量下载_ ...
- python 打开文件4种方式
python 打开文件4种方式 python 打开文件4种方式 [方式一]使用os.system()函数运行其他程序 [方式二]使用ShellExecute函数运行其他程序(用这种方法解决我的问题) ...
- linux上删除文件过慢,Linux上删除大量文件几种方式对比
Linux上删除大量文件几种方式对比 linux上删除大量小文件删除测试:删除500000个小文件测试 生成文件: $ for i in $(seq 500000);do echo 'text' &g ...
最新文章
- SEL | 植物通过根系分泌物招募假单孢菌协助抵抗地上部病原菌侵染
- java .split(,)
- 关于Android开发中Arm、X86和Mips(草稿)
- 使用OpenCV检测图像中的矩形
- Sum in the tree
- CodeForces 1110H. Modest Substrings
- 前端学习(3151):react-hello-react之DoM的diff算法
- QT:不停的提示“文件已改变”
- 数据结构与算法 —— 向量的扩容策略与分摊时间复杂度
- hdoj2050折线分割平面(递推,找规律)
- css制作序列帧动画
- VIX 指数构造详细证明过程
- 我是屌丝——彪悍的人生不需要代言
- 云原生爱好者周刊:Grafana Loki 免费电子书
- matlab 棋盘格畸变矫正
- 【java】JDK动态代理原理
- 解决CSS中display: inline-block有缝隙问题
- 游戏全区全服和分区分服 QQ斗地主的设计
- 世界杯开幕战-德国战车VS哥队
- 前端三剑客 Html Css JavaScript
热门文章
- C#多线程|匿名委托传参数|测试您的网站能承受的压力|附源代码
- 公差基本偏差代号_508/f7:基本偏差怎么查,标准公差又怎么查?
- python 删除sheet_python操作excel
- Linux用户和用户组和文件权限介绍
- 面对系统的稳定性、我们如何做好系统稳定性建设?
- mysql查询修改数据类型_MySQL增删改查及数据类型
- linux中的进程有哪三种基本状态,Linux下的进程有哪三种状态?()
- 函数不可以直接调用其他函数内部定义的变量_python的函数
- 嘉奥丰农显示无法连接服务器,Arcaea无法连接服务器如何解决
- android 7.0 黑屏,Android app启动是出现白屏或者黑屏如何解决?