代码改变世界

图片防盗

2015-08-05 20:51  辉仔1  阅读(143)  评论(0编辑  收藏  举报
 public class ProtectImgHandler:IHttpHandler
 2     {
 3         public bool IsReusable
 4         {
 5             get { return false; }
 6         }
 7 
 8         public void ProcessRequest(HttpContext context)
 9         {
10             context.Request.ContentType = "image/JPEG";
11             // 获取文件服务器端物理路径
12             string FileName = context.Server.MapPath(context.Request.FilePath);
13             // 如果UrlReferrer为空,则显示一张默认的禁止的防盗链图片
14             if (context.Request.UrlReferrer.Host == null)
15             {
16                 context.Response.WriteFile("~/img/error.jpg");
17             }
18             else {
19                 // 如果UrlReferrer不包含自己站点主机域名,则显示一张默认的禁止的防盗链图片
20                 if (context.Request.UrlReferrer.Host.IndexOf("localhost") > -1)
21                 {
22                     context.Response.WriteFile(FileName);
23                 }
24                 else {
25                     context.Response.WriteFile("~/img/error.jpg");
26                 }
27             }
28         }
29 
30             // 最后在配置文件Web.config中写
31       <httpHandlers>
32          <add verb="*" path="*.jpg" type="Picture.ProtectImgHandler"/>
33      </httpHandlers>