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>