文件下载 .net
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/weixing/archive/2012/02/27/2369567.html
文件下载 .net的更多相关文章
- Android 浏览器 —— 使用 WebView 实现文件下载
对当前的WebView设置下载监听 mCurrentWebView.setDownloadListener(new DownloadListener() { @Override public void ...
- C# 文件下载 : WinINet
在 C# 中,除了 WebClient 我们还可以使用一组 WindowsAPI 来完成下载任务.这就是 Windows Internet,简称 WinINet.本文通过一个 demo 来介绍 Win ...
- ASP.net MVC 文件下载的几种方法(欢迎讨论)
在ASP.net MVC 中有几种下载文件的方法 前提:要下载的文件必须是在服务器目录中的,至于不在web项目server目录中的文件下载我不知道,但是还挺想了解的. 第一种:最简单的超链接方法,&l ...
- 让IIS7.0.0.0支持 .iso .7z .torrent .apk等文件下载的设置方法
IIS默认支持哪些MIME类型呢,我们可以这样查看:打开IIS管理器(计算机--管理--服务和应用程序--Internet信息服务(IIS)管理器:或者Win+R,输入inetmgr,Enter),在 ...
- Android中使用AsyncTask实现文件下载以及进度更新提示
Android提供了一个工具类:AsyncTask,它使创建需要与用户界面交互的长时间运行的任务变得更简单.相对Handler来说AsyncTask更轻量级一些,适用于简单的异步处理,不需要借助线程和 ...
- 利用Tomcat内置的servlet实现文件下载功能
起因 最近博客所在的VPS挂了又要重装系统,又要重装各种软件. 以前我也经常更换VPS,每次更换都是各种坑爹事情..比如要下载java.下载tomcat.下载mysql..........以前每次我都 ...
- 多个文件下载打包生成zip格式下载
这个多个文件下载生成zip格式必须先引用一个ICSharpCode.SharpZipLib.dll. 代码如下 //将多个文件打包成压缩文件zip格式下载 protected voi ...
- .net一般处理程序(httphandler)实现文件下载功能
Handler文件代码如下: public class MDMExporterWeb : IHttpHandler { public void ProcessRequest(HttpContext c ...
- asp.net 文件下载(txt,rar,pdf,word,excel,ppt)
aspx 文件下载说起来一点都不难,但是在做的过程中还是遇到了一些小小的问题,就是因为这些小小的问题,导致解决起来实在是太难了,其中一个就是Response.End();导致下载文件出现线程终止的情况 ...
- JavaScript多文件下载
对于文件的下载,可以说是一个十分常见的话题,前端的很多项目中都会有这样的需求,比如 highChart 统计图的导出,在线图片编辑中的图片保存,在线代码编辑的代码导出等等.而很多时候,我们只给了一个链 ...
随机推荐
- android小知识之多个listview在同一界面只有item高亮
我的工程里面一个activity有两个有圆角的listview,就是 自定义的 CornerListView继承ListView, 然后 我想圆角的listview A点击之后一个item会高亮 ...
- 《火球——UML大战需求分析》(0.1)——开篇废话
说明: <火球——UML大战需求分析>是我撰写的一本关于需求分析及UML方面的书,我将会在CSDN上为大家分享前面几章的内容,总字数在几万以上,图片有数十张.欢迎你按文章的序号顺序阅读,谢 ...
- HDU 5875 Function(ST表+二分)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5875 [题目大意] 给出一个数列,同时给出多个询问,每个询问给出一个区间,要求算出区间从左边开始不 ...
- Eclipse连接sql server 2012数据库编程一条龙
一.java通过jdbc连接sql server 2012 原帖地址:http://blog.csdn.net/stewen_001/article/details/19553173/ 1.sql s ...
- swift学习第五章-字典的使用
//以下是关于字典的 //字典的格式[key:value] //字典能够存放基本类型和对象类型的 //声明一个字典 var dictionary1=["key1":"鸭鸭 ...
- Android Fragment 嵌套使用报错
在新的SDK每次创建activity时,会自己主动生成 <pre name="code" class="java">public static c ...
- Android 匿名共享内存C接口分析
在Android 匿名共享内存驱动源码分析中详细分析了匿名共享内存在Linux内核空间的实现,虽然内核空间实现了匿名共享内存,但仍然需要在用户空间为用户使用匿名共享内存提供访问接口.Android系统 ...
- raphael入门到精通---属性和事件篇
属性的使用 上一篇文章我们介绍了raphael如何生成基本的图形(元素),对于每个元素来讲,我们可以添加很多的元素(attr) 下面我就来简单的介绍下元素属性的使用(path元素属性我后面单独列出来介 ...
- N个任务掌握java系列之统计一篇文章中单词出现的次数
问题:统计一篇文章中单词出现的次数 思路: (1)将文章(一个字符串存储)按空格进行拆分(split)后,存储到一个字符串(单词)数组中. (2)定义一个Map,key是字符串类型,保存单词:valu ...
- 面试题之java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况
题目:10. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串. 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输 ...