asp.net的下载实现

我现在接触到的下载有两种形式:
直接下载服务器某个目录下的文件和下载数据库中存的二进制文件

代码如下:
//获取文件对象
FileInfo file = new FileInfo(Server.MapPath("~/123123213213.txt"));

//附件形式
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("好啊.txt", System.Text.Encoding.UTF8));
Response.WriteFile(file.FullName);


//模拟数据库取出的二进制流形式
Response.Clear();
byte[] b = new byte[file.Length];
FileStream fs = new FileStream(Server.MapPath("~/123123213213.txt"), FileMode.Open);
fs.Read(b, 0, (int)file.Length);//这里强转,存时要限制流大小
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("好啊.txt", System.Text.Encoding.UTF8));
Response.BinaryWrite(b);
Response.Flush();
Response.End();

有几点需要说明:
1.Content-Disposition是一种扩展的html协议,我的理解是正好可以来处理下载功能
他的值有两种:attachment表示以附件形式下载,inline表示就在网页上来显示
2.filename后面可以自己跟据需要来定文件名与文件扩展名
3.如果文件名内有中文字,一定要编码,不然会有乱码的
4.Response.End()是一定需要的,不然下载后的文件会莫明增大一点点,我在试的过程中,如果是word文件还好,是excel文件会提示文件损坏,需要修复。虽然一般都能修好,但还是不要这样的好!

一面是一个比较好的网址,说的比我详细:
http://www.cnblogs.com/fredlau/archive/2008/10/14/1311018.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值