微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP隐藏下载地址与防盗链函数

下载也是我们工作中经常会用到的一个功能,如何把下载地址隐藏起来,预防别人知道我们下载的文件真实存放路径呢,我们可以用个函数来实现,下面编程之家跟大家分享: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] 举报,一经查实,本站将立刻删除。

相关推荐