防止盗链下载的方法

< %   
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  
%
>     
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一把编程的菜刀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值