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

图片防盗链是大门户网站一般都会有的,如果你站点图片比较多,为了避免别人直接用你的图片给你服务器增加压力,我们可以采用图片防盗链机制。

asp利用jpge组件写的图片防盗链函数

Sub showimg(FileName)
Response.Clear
Dim Jpeg,temp_pic
On Error Resume Next
Set Jpeg = Server.CreateObject("Persits.Jpeg")
If -2147221005=Err then
'Response.write "没有这个组件,请安装!" '检查是否安装aspJpeg组件
downloadFile FileName
Exit Sub
End If
Jpeg.Open (Server.MapPath(FileName)) '打开图片
If err.number then
'Response.write "打开图片失败,请检查路径!"
Jpeg.Open (Server.MapPath("images/logos.gif"))
response.end
End if
temp_pic=Jpeg.Binary
Response.ContentType = "image/*"
Response.AddHeader "Content-Disposition","filename=" & arr_FileName(FileName)
Response.BinaryWrite temp_pic
Response.End
End Sub

防盗链的第二个函数

Sub downloadFile(strFile) 
On error resume next 
Server.ScriptTimeOut=999999 
Dim S,fso,f,intFilelength,strFilename,DownFileName 
 
strFilename = Server.MapPath(strFile) 
Response.Clear 
Set s = Server.CreateObject("ADODB.Stream") 
s.Open 
s.Type = 1 
Set fso = Server.CreateObject("Scripting.FileSystemObject") 
If Not fso.FileExists(strFilename) Then
'Response.Write("<h1>错误: </h1>
系统找不到指定文件") 
showimg "images/logos.gif"
Exit Sub
End If
Set f = fso.GetFile(strFilename) 
intFilelength = f.size 
s.LoadFromFile(strFilename) 
If err Then
'Response.Write("<h1>错误: </h1>" & err.Description & "<p>") 
showimg "images/logos.gif"
Response.End
End If
Set fso=Nothing
Dim Data 
Data=s.Read 
s.Close 
Set s=Nothing
If Response.IsClientConnected Then
Response.AddHeader "Content-Disposition", "attachment; filename=" & strFile 
Response.AddHeader "Content-Length", intFilelength 
Response.CharSet = "UTF-8"
Response.ContentType = "application/octet-stream"
Response.BinaryWrite Data 
Response.Flush 
End If
End Sub

防盗链的原理:
不直接给出服务器中真实的url,将要访问的文件放到服务器上不可访问的目录中,所以要访问的文件就必须通过asp读取文件以二进制流的类型来发送文件。

Tags:ASP jpeg 函数