求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
%>
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯