ASP和C#隐藏文件下载路径的方法

关于下载路径的隐藏都是通过传递一个数据库中的ID,然后在另外一张页面通过传递的ID在数据库中读出路径。
1、c#中实现的方法(只需要.ASPX.CS的代码就可以了)
string  sel_sql = " select FileVisualPath from TabMailAttachFiles where FileID= " + Request.QueryString[ " destFileName " ].ToString();

//    string destFileName = Request.QueryString["destFileName"]!=null?Request.QueryString["destFileName"]:"";
    string  destFileName = ROA.Components.fune_commerce.Execad(sel_sql).Tables[ 0 ].Rows[ 0 ][ 0 ].ToString();
   destFileName 
=  Server.MapPath( " . " ) + destFileName;
   destFileName 
=  Server.UrlDecode(destFileName);
   
if (File.Exists(destFileName))
   
{
    FileInfo fi 
= new FileInfo(destFileName);
    Response.Clear();
    Response.ClearHeaders();
    Response.Buffer 
= false;
    
    
//Response.AppendHeader("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(Path.GetFileName(destFileName),System.Text.Encoding.Default));
    Response.AppendHeader("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(Path.GetFileName(destFileName),System.Text.Encoding.UTF8));
    Response.AppendHeader(
"Content-Length",fi.Length.ToString());
    Response.ContentType
="application/octet-stream";
    Response.WriteFile(destFileName);
    Response.Flush();
    Response.End();
   }

   
else
   
{
    Response.Write(
"<script langauge=javascript>alert('文件不存在!');history.go(-1);</script>");
    Response.End();
   }

2、在ASP中的实现方法
<!-- #include file="conn.asp"  -->
<%  
Response.Buffer 
= true 
Response.Clear 
dim url 
Dim fso,fl,flsize 
dim Dname 
Dim objStream,ContentType,flName,isre,url1 
'*********************************************调用时传入的下载文件名 
m_ID=trim(request.QueryString("ID")) 
set rs=Server.CreateObject("adodb.recordset")
sql
="select * from dataview where xsf=true and id="&m_ID
rs.open sql,conn,
1,1
if not rs.eof then
    Dname
=rs("path")
else
    Response.Write(
"no found")
    Response.end
end if
rs.close:
set rs=nothing
'****************************************************************** 
If Dname<>"" Then 
'******************************下载文件存放的服务端目录 
url=Server.MapPath(Dname)
else
    Response.Write(
"no found")
    Response.end  
End If 
Set fso=Server.CreateObject("Scripting.FileSystemObject"
Set fl=fso.getfile(url) 
flsize
=fl.size 
flName
=fl.name 
Set fl=Nothing 
Set fso=Nothing 
Set objStream = Server.CreateObject("ADODB.Stream"
objStream.Open 
objStream.Type 
= 1 
objStream.LoadFromFile url 
Select Case lcase(Right(flName, 4)) 
Case ".asf" 
ContentType 
= "video/x-ms-asf" 
Case ".avi" 
ContentType 
= "video/avi" 
Case ".doc" 
ContentType 
= "application/msword" 
Case ".zip" 
ContentType 
= "application/zip" 
Case ".xls" 
ContentType 
= "application/vnd.ms-excel" 
Case ".gif" 
ContentType 
= "image/gif" 
Case ".jpg""jpeg" 
ContentType 
= "image/jpeg" 
Case ".bmp"
ContentType 
= "image/bmp"
Case ".ppt"
ContentType 
= "application/vnd.ms-powerpoint"
Case ".mdb"
ContentType 
= "application/x-msaccess"
Case ".wav" 
ContentType 
= "audio/wav" 
Case ".mp3" 
ContentType 
= "audio/mpeg3" 
Case ".mpg""mpeg" 
ContentType 
= "video/mpeg" 
Case ".rtf" 
ContentType 
= "application/rtf" 
Case ".htm""html" 
ContentType 
= "text/html" 
Case ".txt" 
ContentType 
= "text/plain" 
Case Else 
ContentType 
= "application/octet-stream" 
End Select 
Response.AddHeader 
"Content-Disposition""attachment; filename=" & flName 
Response.AddHeader 
"Content-Length", flsize 
Response.Charset 
= "UTF-8" 
Response.ContentType 
= ContentType 
Response.BinaryWrite objStream.Read 
Response.Flush 
response.Clear() 
objStream.Close 
Set objStream = Nothing 
%>

 

 

http://xbcin.cnblogs.com/archive/2006/04/03/365530.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值