防止盗链下载的方法

<%   
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  
%
>    
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一把编程的菜刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值