下载也是我们工作中经常会用到的一个功能,如何把下载地址隐藏起来,预防别人知道我们下载的文件真实存放路径呢,我们可以用个函数来实现,下面青岛星网跟大家分享: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 %>