经常在网络上四处载东西,有时碰到直接拷贝一个类似http://193.100.100.56/TestWebSolution/WebApplication1/test.rar地址准备下载test.rar文件时,却被告知没有登录或者直接跳转到其他页面的情况,然后等登录后直接下载该文件。要实现上面情况,在.NET世界里是比较容易的。
1、 首先创建一个类库项目ClassLibrary1,实现如下(点这里查看):
using System;
using System.Web; // 引用System.Web组件
namespace ClassLibrary1
{
public class MyHandler : IHttpHandler
{
public MyHandler()
{
}
#region IHttpHandler 成员
public void ProcessRequest(HttpContext context)
{
// 跳转到WebForm1.aspx,由WebForm1.aspx输出rar文件
HttpResponse response = context.Response;
response.Redirect("http://193.100.100.56/TestWebSolution/WebApplication1/WebForm1.aspx");
}
public bool IsReusable
{
get
{
// TODO: 添加 MyHandler.IsReusable getter 实现
return true;
}
}
#endregion
}
}
2、 创建测试用的Web项目WebApplication1。在配置文件Web.config文件节点里增加如下节点:
<httpHandlers>
<add verb="*" path="*.rar" type="ClassLibrary1.MyHandler, ClassLibrary1" />
httpHandlers>
3、 在WebForm1.aspx里增加一个文本为“下载”的Button,其Click事件如下(点这里查看):
FileInfo file = new System.IO.FileInfo(@"G:\WebCenter\TestWebSolution\WebApplication1\test.rar");
// FileInfo 类在 System.IO 命名空间里
Response.Clear();
Response.AddHeader("Content-Disposition", "filename=" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
string fileExtension = file.Extension;
// 根据文件后缀指定文件的Mime类型
switch (fileExtension)
{
case ".mp3":
Response.ContentType = "audio/mpeg3";
break;
case "mpeg":
Response.ContentType = "video/mpeg";
break;
case "jpg":
Response.ContentType = "image/jpeg";
break;
case "........等等":
Response.ContentType = "....";
break;
default:
Response.ContentType = "application/octet-stream";
break;
}
Response.WriteFile(file.FullName);
Response.End();
4、 最后一步就是在IIS里增加一个应用程序扩展。在“默认网站”->“属性”->“主目录”->“配置”。在弹出的“应用程序配置”窗口里按“添加”,在弹出的“添加/编辑应用程序扩展名映射”窗口里“可执行文件”选择C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll,在扩展名里输入“.rar”,然后确定即可。
5、 在IE里输入http://193.100.100.56/TestWebSolution/WebApplication1/test.rar,会立即跳转到http://193.100.100.56/TestWebSolution/WebApplication1/WebForm1.aspx,然后按WebForm1.aspx的“下载”按钮就可以下载test.rar了。
6、 当然,这里只按例子给个思路,完全可以再根据自身情况扩展。下面有几个参考的资源文章:
l http://www.9seek.com/news/show.aspx?id=745&cid=12
l http://www.9seek.com/news/show.aspx?id=521&cid=12
l http://www.9seek.com/news/show.aspx?id=520&cid=12
l http://msdn.microsoft.com/asp.net/using/building/web/default.aspx?pull=/library/en-us/dnaspp/html/URLRewriting.asp
分享到:
相关推荐
该例子简单的示例了防止盗链下载文件的功能,可以对文件起到一定的保护功能,有资源下载站点的C注意了哦,下载吧,犹豫什么呢.
一个下载的代码,支持迅雷等下载工具,可以防止盗链下载。
防止盗链的C#实现。以jpg为例. 直接打开网页上签入的图片,可以通过。但是直接访问的,就转到错误页。
Asp.Net防止盗链 Asp.Net防止盗链 Asp.Net防止盗链
图片的处理程序以及防止盗链的方法,展现了ASP.NET2.0中的防盗链技术
本篇文章主要介绍了详解PHP防止盗链防止迅雷下载的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
今天在书上偶然看到了如何实现防盗链的问题,到网上查看了一下盗链主要是其他的一些网站引用本站图片或者下载链接。
指定图片的范围网址或ip,其他网站应用的时候如果不是指定的地址,将会显示指定的错误图片
本篇文章介绍了,php中使用Apache的htaccess防止图片被盗链的解决方法。需要的朋友参考下
NULL 博文链接:https://ygl-250712-163-com.iteye.com/blog/858068
在IIS里成功加载本插件后可以有效的防止自己站点里的图片文件被其他站点盗链,并可自定义当图片被盗链时显示的图片,非常适用于图片资源类站点,可有效的保护自己站点的图片资源
本篇文章主要介绍了Asp.Net Core 通过中间件防止图片盗链的实例,具有一定的参考价值,有兴趣的可以了解一下。
Apache服务器下防止图片盗链的办法 如果你的网站以图片为主,哪天发现月底没到流量就快用光了,那就可以利用图片转向,在不修改网页的前提下,把图片下载请求转向到其它空间(比如试用主机),临时过渡。 下面开始讲解...
防止其它网站盗用你的图片,浪费你宝贵的流量。 图片转向有什么用? 如果你的网站以图片为主,哪天发现月底没到流量就快用光了,那就可以利用图片转向,在不修改网页的前提下,把图片下载请求转向到其它空间...
如今的互联网,采集网站非常多,很多网站都喜欢盗链/盗用别人网站的图片,这样不仅侵犯网权,还导致被盗链的网站消耗大量的流量,给服务器造成比较大的压力,本文章向大家介绍php如何防止图片盗用/盗链的两种方法,...
有些粗心大意的人转贴时,简单地把图片复制了过来。可如果该网站的图片设置为防止外部链接,我们遇到转载的好帖,又找不到原出处,难道只有哀叹的份么?
主要介绍了 java 防盗链详解及解决办法的相关资料,这里介绍了防盗链的概念、产生原因及Http中的referer,最后介绍解决办法,需要的朋友可以参考下
尽管有各种各样的.htaccess用法,但至今最流行的也可能是最有用的做法是将其用于网站目录可靠的密码保护。
一套非常实用的下载系统,可以防止盗链等多种功能