您的位置:首页 > 编程语言 > ASP

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

2006-04-08 19:41 786 查看
关于下载路径的隐藏都是通过传递一个数据库中的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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: