C# 图片防盗链怎么做?

C# 图片防盗链怎么做

使用httpHandle来实现,对图片文件的请求做专门的处理

第一步:创建一个类,继承自IHttpHandler,代码如下

C# codeusing System;

using System.Web;

namespace CustomHandler{

public class JpgHandler : IHttpHandler{

public void ProcessRequest(HttpContext context){

// 获取文件服务器端物理路径

string FileName = context.Server.MapPath(context.Request.FilePath);

// 如果UrlReferrer为空,则显示一张默认的禁止盗链的图片

if (context.Request.UrlReferrer.Host == null){

context.Response.ContentType = "image/JPEG";

context.Response.WriteFile("/error.jpg");

}else{

// 如果 UrlReferrer中不包含自己站点主机域名,则显示一张默认的禁止盗链的图片

//string serverHost = context.Request.Url.Host;

//Uri u = context.Request.UrlReferrer;

//if (u == null || u.Host.ToLower() != serverHost.ToLower())

if (context.Request.UrlReferrer.Host.IndexOf("yourdomain.com") > 0){

context.Response.ContentType = "image/JPEG";

context.Response.WriteFile(FileName);

}else{

context.Response.ContentType = "image/JPEG";

context.Response.WriteFile("/error.jpg");

}

}

}

public bool IsReusable{

get{ return true; }

}

}

}

第二步:编译成DLL

csc /t:library CustomHandler.cs

第三步:添加编译好的DLL引用到当前站点的bin文件夹下

第四步:在Web.Config 中注册这个Handler

C# code<system.web>

<httpHandlers>

<add path="*.jpg,*.jpeg,*.gif,*.png,*.bmp" verb="*" type="CustomHandler.JpgHandler,CustomHandler" />

</httpHandlers>

</system.web>

//verb指的是请求此文件的方式,可以是post或get,用*代表所有访问方式。CustomHandler.JpgHandler表示命名空间和类名,CustomHandler表示程序集名。

-----------------

IHttpHandler的妙用(1):给图片添加水印

http://blog.csdn.net/zhoufoxcn/archive/2008/01/10/2033530.aspx

==============

Http Handler 介绍

在IIS 对ISAPI进行设置。让图片文件.jpg等和isapi.dll关联起来

如何在IIS中设置ISAPI来进行文件与处理程序映射:

  1. 打开IIS,选择本范例所用的站点,右键,选择“属性”。
  2. 选择“主目录”选项卡,点击“配置...”按钮。
  3. 点击“添加”,设置“可执行文件”为“C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll”,设置“扩展名”为“.rss”,点“确定”。
  4. 注意,不要勾选“检查文件是否存在”复选框,这样不用创建文件,只要在地址栏输入任意以.rss后缀结尾的文件名,均会交由上面创建的Handler去处理,而不管这个文件是否存在,也不管请求的是Article.rss还是Sample.rss。