防止盗链下载的方法

    技术2022-05-19  26

    <%   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)'/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  %>   

    本文来自博客,转载请标明出处:http://blog.csdn.net/chinmo/archive/2008/03/21/2203491.aspx


    最新回复(0)