永发信息网

求ASP的图片防盗链代码

答案:2  悬赏:50  手机版
解决时间 2021-07-27 00:00
  • 提问者网友:活着好累
  • 2021-07-26 00:28

求类似 http://www.feixuer.net/album/disp.asp?id=1850的showimg.asp代码

主要还是“缓存图片查看器”类软件读不出图片

哪位好心人能提供一下代码~~

最佳答案
  • 五星知识达人网友:七十二街
  • 2021-07-26 01:11

这个我只能给你一个思路,供你参考。


就是用ASP读写文件的方法,通过ID去读取指定位置的图片信息,然后在前台显示的时候,是用写文件的方法,(类似ASP验证码的形式)去显示它。那么,显示出来的图片名称就是同一个名称了。


而当盗链的时候,因为那个图片实际上是不存在的。所以就没了。


仅供参考。

全部回答
  • 1楼网友:你哪知我潦倒为你
  • 2021-07-26 02:28
<% Const FileType = "gif|jpg|jpeg|bmp" Const FilePath = "./upload" //是图片目录 Qstring= Request("Id") //接收参数 On Error Resume Next Response.Buffer = True Response.Clear Dim Server_v1,Server_v2,Path Server_v1=Cstr(Request.ServerVariables("HTTP_REFERER")) Server_v2=Cstr(Request.ServerVariables("SERVER_NAME")) If Server_v1<>"" And Mid(Server_v1,8,Len(Server_v2)) = Server_v2 Then TFilePath = FilePath & "/" &Qstring //有参数传入时要加栽的图片 Else TFilePath = "upload/nopic.jpg" //这是当出错时要加载的图片 End If If ChkFile(TFilePath) Then Response.Write("<h2>错误提示: </h2>" & err.Description & "") DownloadFile(TFilePath) Function UseStream(FileName) Dim FileStream,File Set FileStream = Server.CreateObject("ADODB.Stream") FileStream.Open FileStream.Type = 1 File = server.MapPath(FileName) FileStream.LoadFromFile(File) 'Response.ContentType = "application/octet-stream" Response.BinaryWrite FileStream.Read Response.Flush FileStream.Close Set FileStream = Nothing End Function Function DownloadFile(FileName) On error resume next Server.ScriptTimeOut=999999 Response.Clear Dim FileType,ADS,StrFileName,Data FileType=Lcase(Split(FileName,".")(ubound(Split(FileName,".")))) StrFileName=Server.Mappath(FileName) TempFileName = Split(StrFileName,"\")(Ubound(Split(StrFileName,"\"))) Set ADS = Server.CreateObject("ADODB.Stream") ADS.Open ADS.Type = 1 ADS.LoadFromFile(StrFileName) Data=ADS.Read Fsize=Clng(lenb(Data)) If Err Then Response.Write("<h2>错误提示: </h2>" & err.Description & "") Response.End End If ADS.Close If Response.IsClientConnected Then If FileType="gif" Or FileType="jpg" Or FileType="jpeg" Or FileType="bmp" Then Response.ContentType = "image/*" Else Response.AddHeader "Content-Disposition", "attachment; filename=" & TempFileName Response.ContentType = "application/ms-download" End If Response.AddHeader "Content-Length", Fsize Response.CharSet = "GB2312" Response.ContentType = "application/octet-stream" Response.BinaryWrite Data Response.Flush End If End Function Function ChkFile(FileName) Dim Temp,FileType ChkFile=False FileType=Lcase(Split(FileName,".")(ubound(Split(FileName,".")))) Temp="|asp|aspx|cgi|php|cdx|cer|asa|mdb|" If Instr(Temp,"|"&FileType&"|")>0 Then ChkFile=True End Function %>
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯