下载功能代码

using System;
002	using System.Data;
003	using System.Configuration;
004	using System.Web;
005	using System.Web.Security;
006	using System.Web.UI;
007	using System.Web.UI.WebControls;
008	using System.Web.UI.WebControls.WebParts;
009	using System.Web.UI.HtmlControls;
010	using System.IO;
011	 
012	  
013	 
014	public partial class _Default : System.Web.UI.Page
015	{
016	 protected void Page_Load(object sender, EventArgs e)
017	 {
018	 
019	 }
020	 
021	 //TransmitFile实现下载
022	 protected void Button1_Click(object sender, EventArgs e)
023	 {
024	 /*
025	 微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite
026	 下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。
027	 代码如下:
028	 */
029	 
030	 Response.ContentType = "application/x-zip-compressed";
031	 Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");
032	 string filename = Server.MapPath("DownLoad/z.zip");
033	 Response.TransmitFile(filename);
034	 }
035	 
036	 //WriteFile实现下载
037	 protected void Button2_Click(object sender, EventArgs e)
038	 {
039	 /*
040	 using System.IO;
041	 
042	 */
043	 
044	 string fileName ="asd.txt";//客户端保存的文件名
045	 string filePath=Server.MapPath("DownLoad/aaa.txt");//路径
046	 
047	 FileInfo fileInfo = new FileInfo(filePath);
048	 Response.Clear();
049	 Response.ClearContent();
050	 Response.ClearHeaders();
051	 Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
052	 Response.AddHeader("Content-Length", fileInfo.Length.ToString());
053	 Response.AddHeader("Content-Transfer-Encoding", "binary");
054	 Response.ContentType = "application/octet-stream";
055	 Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
056	 Response.WriteFile(fileInfo.FullName);
057	 Response.Flush();
058	 Response.End();
059	 }
060	 
061	 //WriteFile分块下载
062	 protected void Button3_Click(object sender, EventArgs e)
063	 {
064	 
065	 string fileName = "aaa.txt";//客户端保存的文件名
066	 string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
067	 
068	 System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
069	 
070	 if (fileInfo.Exists == true)
071	 {
072	 const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
073	 byte[] buffer = new byte[ChunkSize];
074	 
075	 Response.Clear();
076	 System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
077	 long dataLengthToRead = iStream.Length;//获取下载的文件总大小
078	 Response.ContentType = "application/octet-stream";
079	 Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));
080	 while (dataLengthToRead > 0 && Response.IsClientConnected)
081	 {
082	 int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小
083	 Response.OutputStream.Write(buffer, 0, lengthRead);
084	 Response.Flush();
085	 dataLengthToRead = dataLengthToRead - lengthRead;
086	 }
087	 Response.Close();
088	 }
089	 }
090	 
091	 //流方式下载
092	 protected void Button4_Click(object sender, EventArgs e)
093	 {
094	 string fileName = "aaa.txt";//客户端保存的文件名
095	 string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
096	 
097	 //以字符流的形式下载文件
098	 FileStream fs = new FileStream(filePath, FileMode.Open);
099	 byte[] bytes = new byte[(int)fs.Length];
100	 fs.Read(bytes, 0, bytes.Length);
101	 fs.Close();
102	 Response.ContentType = "application/octet-stream";
103	 //通知浏览器下载文件而不是打开
104	 Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
105	 Response.BinaryWrite(bytes);
106	 Response.Flush();
107	 Response.End();
108	 
109	 }
110	}

使用GridView等控件导出Excel

public void outExcel()
02	        {
03	            string name = returnName();
04	 
05	            string style = @"<style>.text{mso-number-format:\@;}</style>";
06	 
07	            Response.ClearContent();
08	 
09	            Response.Buffer = true;
10	            Response.Charset = "gb2312";
11	            Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
12	 
13	            Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(name, System.Text.Encoding.UTF8) + ".xls");
14	 
15	            Response.ContentType = "application/excel";
16	 
17	            StringWriter sw = new StringWriter();
18	 
19	            HtmlTextWriter htw = new HtmlTextWriter(sw);
20	 
21	            GridView1.RenderControl(htw);
22	 
23	            Response.Write(style);
24	 
25	            Response.Write(sw.ToString());
26	 
27	            Response.End();
28	        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值