精美而实用的网站,关注web编程技术、网站运营、SEO推广,让您轻松愉快的学习

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