按钮事件 直接下载 任何文件格式

 

#region  -- 下载文件按钮事件-----------------

    
string  FullFileName  = Server.Mappath( " ~/ " + " 要下载的文件相对路径 " )
    
string  strFileName  =  FullFileName.Substring(FullFileName.LastIndexOf( " / " ) + 1 );  // 获取文件名(不包含路径)
    
    FileInfo DownloadFile;
    
try
    {   
     DownloadFile 
=   new  FileInfo(FullFileName);  // 设置要下载的文件
   
     Response.Clear();                             
// 清除缓冲区流中的所有内容输出

     Response.ClearHeaders();                      
// 清除缓冲区流中的所有头,不知道为什么,不写这句会显示错误页面

     Response.Buffer 
=   false ;                       // 设置缓冲输出为false

     
// 设置输出流的 HTTP MIME 类型为application/octet-stream

     Response.ContentType 
=   " application/octet-stream " ;

     
// 将 HTTP 头添加到输出流

     Response.AppendHeader(
" Content-Disposition " ,

      
" attachment;filename= "   +  strFileName  +  DownloadFile.Extension );

     Response.AppendHeader(
" Content-Length " , DownloadFile.Length.ToString());

     
// 将指定的文件直接写入 HTTP 内容输出流。

    
// 一定要注意是WriteFile不是Write(害得我搞了一晚上)

     Response.WriteFile(DownloadFile.FullName);

     Response.Flush();        
// 向客户端发送当前所有缓冲的输出

     Response.End();          
// 将当前所有缓冲的输出发送到客户端,这句户有时候会出错,可以尝试把这句话放在整个函数的最后一行。也可以用HttpContext.Current.ApplicationInstance.CompleteRequest ()方法代替
    }
    
catch  ( Exception err)
    {
    
// 出错处理
     
// this.labelStatus.Text = "无法下载文件:" + sFileName + ",由于:" + err.Message;
    }

    
#endregion    -- 下载文件按钮事件-----------------

转载于:https://www.cnblogs.com/rezkk/archive/2008/11/05/1327384.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值