本站首页    管理页面    写新日志    退出

The Neurotic Fishbowl

[.NET-Winform]ASP.NET 中直接下载文件
麦林 发表于 2008/6/1 12:48:10

  // 文件的名称   string filename = Server.MapPath("~/test.txt");   System.IO.FileInfo aFile = new System.IO.FileInfo(filename);   string na=Path.GetFileName(name);   Response.Clear();   Response.ClearHeaders();   Response.BufferOutput=false;   Response.ContentType="application/octet-stream";   //Response.AddHeader("Content-Disposition","attachment;filename="+na);   //上面这条中文会乱码,应该下面这样写   Response.AppendHeader("Content-disposition","attachment;filename=" + HttpUtility.UrlEncode(na,System.Text.Encoding.UTF8));   Response.AddHeader("Content-Length",aFile.Length.ToString());   Response.WriteFile(name);   Response.Flush();   Response.End();   public void getFile(string fileName)  {   System.IO.FileStream r = new System.IO.FileStream(fileName, System.IO.FileMode.Open); //文件下载实例化    //设置基本信息    Response.Buffer = false;   Response.AddHeader("Connection", "Keep-Alive");   Response.ContentType = "application/octet-stream";   Response.ContentEncoding = System.Text.Encoding.Default;   //保证下载文件名为中文    Response.Charset = "GB2312";    Response.AddHeader("Content-Disposition", "attachment;filename=" +HttpUtility.UrlEncode( System.IO.Path.GetFileName(fileName)));   Response.AddHeader("Content-Length", r.Length.ToString());   while (true) //如果文件大于缓冲区,通过while循环多次加载文件   {    //开辟缓冲区空间     byte[] buffer = new byte[1024];    //读取文件的数据    int leng = r.Read(buffer, 0, 1024);    if (leng == 0) //到文件尾,结束     {     break;    }    if (leng == 1024) //读出的文件数据长度等于缓冲区长度,直接将缓冲区数据写入     {     Response.BinaryWrite(buffer); //向客户端发送数据流    }    else    {     //读出文件数据比缓冲区小,重新定义缓冲区大小,只用于读取文件的最后一个数据块      byte[] b = new byte[leng];     for (int i = 0; i <leng; i++)     {      b[i] = buffer[i];     }     Response.BinaryWrite(b);    }   }   r.Close();//关闭下载文件    Response.End();//结束文件下载  }

阅读全文(2453) | 回复(0) | 编辑 | 精华

 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
 

The Neurotic Fishbowl

.: 公告

fighting for the work!


Bloginess

«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031

.: 我的分类(专题)

首页(449)
文字感悟(103)
学习公共库(61)
生活体会(100)
资源收集(14)
.NET-Winform(27)
音乐文字(15)
心情小记(119)
SQL问题解决(10)


In the Bowl

.: 最新日志

C#打印代码
你看到的我是蓝色的
即将逝去的3月
这个假期
两个月过去
表名存在其他表时获取数据
条码打印
Remoting的用法
INI文件用法


.: 最新回复

回复:条码打印
回复:条码打印
回复:即将逝去的3月
回复:cookie对象使用
回复:条码打印
回复:JSP学习(字符串比较)
回复:应收应付核销规则及常见问题(续)
回复:两个月过去
回复:两个月过去


The Fishkeeper
blog名称:栗色?蓝色?
日志总数:449
评论数量:201
留言数量:37
访问次数:2268011
建立时间:2006年5月16日



Text Me

.: 留言板

签写新留言

链接完成
回:loseVC
来喽~
转转......
新年啦
对自己说
祝福
回:佑手
WO


Other Fish in the Sea

.: 链接


loseVC's BLOG
Collapsar_feel
布衣加针
C#and.Net
Kinogam Web




站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144799097 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号