Asp.net文件下载的实现

一种简单的方法, 将服务器端文件的服务器路径直接写到一个LinkButton或者HyperLink的Url中, 让浏览器完成下载. 但这么做不够灵活, 只能在page_load的时候写死每个链接, 且直接使用明文公开文件路径, 大大降低了安全性.

这里我们使用一种基于Response对象的文件传输方法, 改方法同样是基于http协议的.

我们可以在一个按钮的相应函数中写入如下代码:

 

 

ContractedBlock.gif ExpandedBlockStart.gif Code
 1 string filePath; // 服务器端文件路径.
 2 string fileName; // 下载显示的文件名.     
 3 if( System.IO.File.Exists( filePath ) )
 4 {
 5 // 编码以防出现乱码.
 6 this.Response.AppendHeader("Content-Disposition", String.Format("attachment; filename=\"{0}\";", HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)));
 7  
 8 Response.ContentType = "application/octet-stream";
 9 
10 Response.AddHeader( "Content-Length"new System.IO.FileInfo( filePath ).Length.ToString() );
11 
12 Response.TransmitFile( filePath );
13 
14 this.Response.End();
15                     
16 }

 当然, 也可以提供下载页方式, 把上述代码写入某页面的Page_Load方法中, 在按钮相应方法中调用Response.Redirect访问该下载页即可.

 

转载于:https://www.cnblogs.com/MolbyHome/archive/2009/06/11/1501287.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值