下载也是我们工作中经常会用到的一个功能,如何把下载地址隐藏起来,预防别人知道我们下载的文件真实存放路径呢,我们可以用个函数来实现,下面编程之家跟大家分享:ASP隐藏下载地址与防盗链函数。
ASP隐藏下载地址与防盗链函数
<%
Call ChkPostAgent '防止盗链检测
Call DownloadFIle("soft/test.rar") '下载文件
%>
<%
Public Sub ChkPostAgent()
'On Error Resume Next
Dim server_v1, server_v2
Dim m_blnAgent, m_strAgent
m_blnAgent = False
server_v1 = CStr(Request.ServerVariables("HTTP_REFERER"))
server_v2 = CStr(Request.ServerVariables("SERVER_NAME"))
If Mid(server_v1, 8, Len(server_v2)) = server_v2 Then
m_blnAgent = True
End If
If m_blnAgent Then
m_strAgent = Request.ServerVariables("HTTP_USER_AGENT")
If Left(m_strAgent, 7) = "Mozilla" Or Left(m_strAgent, 5) = "Opera" Then
m_blnAgent = True
End If
End If
If m_blnAgent = False Then
response.Write "非法链接"
Response.End
End If
End Sub
Public Sub DownloadFIle(StrFIle)
StrFIlename = Server.Mappath(StrFIle)
Response.Buffer = True
Response.Clear
Set S = Server.CreateObject("ADODB.Stream")
S.Open
S.Type = 1
On Error Resume Next
Set Fso = Server.CreateObject("ScrIptIng.FIleSystemObJect")
If Not Fso.FileExists(StrFIleName) Then
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
Response.RedIrect Request.ServerVarIables("HTTP_REFERER")
Response.End
End If
FileExt = Mid(StrFIlename, InStrRev(StrFIleName, ".") + 1)
Select Case UCase(FIleExt)
Case "ASP", "ASA", "ASPX", "ASAX", "MDB", "PHP", "JSP", "SHTML", "HTML", "HTM", "TV", "DATA"
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
Response.RedIrect Request.ServerVarIables("HTTP_REFERER")
Response.End
End Select
Set F = Fso.GetFile(StrFIlename)
IntFIlelength = F.Size
s.LoadFromFIle(StrFIlename)
If Err Then
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
Response.RedIrect Request.ServerVarIables("HTTP_REFERER")
Response.End
End If
Set Upload = Server.CreateObject("PersIts.Upload")
If Upload Is nothing Then
response.addheader "Content-disposItIon", "attachment; FIlename="&F.Name
response.addheader "Content-Length", IntFilelength
Response.CharSet = "UTF-8"
Response.ContentType = "application/x-download"
Response.BinaryWrite S.Read
Response.Flush
S.Close
Set s = nothing
Else
Upload.SendBinary StrFIlename, True, "application/x-download", False
End If
End Sub
%>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。