防止盗链下载的方法

<%  
From_url   =   Cstr(Request.ServerVariables("HTTP_REFERER"))  
Serv_url   =   Cstr(Request.ServerVariables("SERVER_NAME"))  
if   mid(From_url,8,len(Serv_url))   <>   Serv_url   then  
response.write   "非法链接!"   '防止盗链  
response.end  
end   if  
if   Request.Cookies("Logined")=""   then  
response.redirect   "/login.asp"   '需要登陆!  
end   if  
Function   GetFileName(longname)&#39;/folder1/folder2/file.asp=>file.asp  
while   instr(longname,"/")  
longname   =   right(longname,len(longname)-1)  
wend  
GetFileName   =   longname  
End   Function 
Dim   Stream  
Dim   Contents  
Dim   FileName  
Dim   TrueFileName  
Dim   FileExt  
Const   adTypeBinary   =   1  
FileName   =   Request.QueryString("FileName")  
if   FileName   =   ""   Then 
Response.Write   "无效文件名!" 
Response.End 
End   if  
FileExt   =   Mid(FileName,   InStrRev(FileName,   ".")   +   1)  
Select   Case   UCase(FileExt)  
Case   "ASP",   "ASA",   "ASPX",   "ASAX",   "MDB" 
Response.Write   "非法操作!" 
Response.End 
End   Select 
Response.Clear  
if   lcase(right(FileName,3))="gif"   or   lcase(right(FileName,3))="jpg"   or   lcase(right(FileName,3))="png"   then  
Response.ContentType   =   "image/*"   '对图像文件不出现下载对话框  
else  
Response.ContentType   =   "application/ms-download" 
end   if  
Response.AddHeader   "content-disposition",   "attachment;   filename="   &   GetFileName(Request.QueryString("FileName"))  
Set   Stream   =   server.CreateObject("ADODB.Stream")  
Stream.Type   =   adTypeBinary  
Stream.Open  
if   lcase(right(FileName,3))="pdf"   then   '设置pdf类型文件目录  
TrueFileName   =   "/the_pdf_file_s/"&FileName  
end   if  
if   lcase(right(FileName,3))="doc"   then   '设置DOC类型文件目录  
TrueFileName   =   "/my_D_O_C_file/"&FileName  
end   if  
if   lcase(right(FileName,3))="gif"   or   lcase(right(FileName,3))="jpg"   or   lcase(right(FileName,3))="png"   then  
TrueFileName   =   "/all_images_/"&FileName   '设置图像文件目录  
end   if  
Stream.LoadFromFile   Server.MapPath(TrueFileName)  
While   Not   Stream.EOS  
Response.BinaryWrite   Stream.Read(1024   *   64)  
Wend  
Stream.Close  
Set   Stream   =   Nothing 
Response.Flush  
Response.End 
%>   


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chinmo/archive/2008/03/21/2203491.aspx

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值