防止盗链下载问题
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
相关文章:
中国人工智能市场破 50 亿!你还不了解 AI 云服务吗?
作者 | 马超责编 | 伍杏玲出品 | CSDN(ID:CSDNnews)从AI的发展趋势来看,最新的人工智能模型对于算力的要求往往较高,如谷歌的T5,其整个模型的参数数量达到了惊人的 110 亿,谷歌科学家更在T5的论…

Java中数据存储方式
2019独角兽企业重金招聘Python工程师标准>>> 1. 寄存器(register)。这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你…

Oracle与JCP执行委员会分享了他们的Java EE策略
Anil Gaur是Oracle集团负责Java EE和WebLogic Server的副总裁。他受邀在上一次的JCP执行委员会会议上发表了演讲,透露了有关Java EE未来发展的一些信息。他所传达的信息和Oracle之前的说法一致:企业编程正在发生变化,Oracle希望适应这种变化。…
5G:新基建的压舱石,如何为新基建按下“加速键”?
受访嘉宾 | 广和通 CEO 应凌鹏记者 | 邓晓娟2019 年,伴随着 5G 的浪潮,5G、AI、AIoT等新兴技术得到了全面的爆发,过去人们认为遥不可及的「高科技」,也逐渐走下“神坛”来进入大家的生活。5G 时代的万物互联,在本次疫情…

no argument specified with option /LIBPATH:错误的解决
作者:朱金灿来源:http://blog.csdn.net/clever101下午使用VS2005编译工程碰到一个链接错误:no argument specified with option "/LIBPATH:"。检查了链接库的文件路径,发现某个路径是非法的(即不存在该文件路…

Animation 模拟纸盒的爆破
用简单的Animation动作模拟爆破的瞬间,仔细的调整各种参数效果会更像 原理:用定义好的纸张从onTouch中心点向四面八方散开,散开过程中,使用不用的速度、大小、方向、旋转角度、透明度(这里纸张可以加上火焰,…
代码恒久远,GitHub 永流传
作者 | 唐小引题图 | GitHub来源 | CSDN(ID:CSDNnews)这两天,在 GitHub 上积极贡献代码的许多开发者都收到了「Arctic Code Vault Contributor」的荣誉勋章的通知,并非常兴奋地晒起了朋友圈。因为这标志着自己在 GitHu…

不允许后退的方法
由于项目的需要不允许系统在提交之后,按IE的后退按钮进行再次提交。试试了一下在 .NET中通过如下语句 Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);就可以使页面的缓存失效,每次都需要获取新页面。 <script>history.for…

3个题目熟悉类和对象基础
1、按要求编写Java应用程序: (1)编写西游记人物类(XiYouJiRenWu)其中属性有:身高(height),名字(name),武器(weapon&#x…

按下回车表示确定提交
<body οnkeydοwn"if (event.keyCode13) {document.all.button2.click()}"> 下面的五种方法都可以帮你解决这种问题1.<script languagejavascript>function document.onkeydown(){ if (event.keyCode 13) { if (event.srcElement docum…
A股暴跌,户均亏2万!刚写好的辞职信又撕了……
仅用1天,A股市值单日蒸发达到3.5万亿,人均亏了超2万!“芯片龙头”企业中芯国际正式登陆科创板,使得半导体板块整体跌幅较小。中芯国际上市首日涨幅超200%,收报82.92元,总市值达6137.57亿元,成为…

DataList在无数据记录时显示类似GridView空模板(EmptyDataTemplate)
在FooterTemplate加个Label并根据repeater.Items.Count判断是否有记录。HTML代码: <FooterTemplate> <asp:Label ID"lblEmpty" Text"No data recprd exist !" runat"server" Visible<%#bool.Parse((DataList1.I…

QButtonGroup 的使用
1、3以后尽量手写,因为没有现在的控件了 2、 1 // lyy : 2016/8/26 12:17:41 说明:存放radioButton2 QButtonGroup *buttonGroup;3 // lyy : 2016/8/26 11:11:55 说明:radioButton4 buttonGroup new QButtonGroup();5 buttonGroup->addButt…
机器学习算法易受攻击?阿里“安全基建”这样应对AI的不安全
出品 | AI科技大本营(ID:rgznai100)数字基建的浪潮之下,诸多行业领域都在加速融合5G、大数据中心、AI等新技术,向数字化转型。近日,多位全国政协委员、院士和安全行业专家提出,应尽快出台安全基建国家标准&…

不可以输入中文
function checkCH() {var strtxtPwd.value;var c /[/u4e00-/u9fa5]/;if(c.test(str)){alert("不能输入中文。");return false;}return true; }

tomcat虚拟路径的几种配置方法
tomcat配置虚拟路径的4种方法在tomcat中,webapp文件夹默认为web应用的根目录。1.在tomcat\conf\server.xml中找到 host标签,在host标签中增加新的元素<Context/>并设置 Context的元素,其中path元素所设置的值就是在浏览器中所要访问的虚…

hi35183e增加exfat文件系统的支持
64G-128G的tf卡文件系统格式为exfat,而hi3518e默认只支持fat32格式的tf卡。为了挂载64G以上的tf卡,只能将sd卡先格式化成FAT32。鉴于exfat性能比FAT32强,因此考虑移植exfat驱动到海思3518e平台,这样就不用强制格式化tf卡。 拷贝驱动源码到内核…

XML的简单读取与写入
作者:网际浪子专栏(曾用名littlehb) http://blog.csdn.net/littlehb/我用的是一种很笨的方法,但可以帮助初学者了解访问XML节点的过程。已知有一个XML文件(bookstore.xml)如下: <?xml ver…
美国 AI 博士一针见血:Python 这样学最容易成为高手!
我见过市面上很多的 Python 讲解教程和书籍,他们大都这样讲 Python 的:先从 Python 的发展历史开始,介绍 Python 的基本语法规则,Python 的 list, dict, tuple 等数据结构,然后再介绍字符串处理和正则表达式࿰…

区域链实践第一步——区域链测试环境搭建
区域链光速发展,在许多人的期许下,已经成为了互联网下一个革新点。区块链会成就的未来价值互联网,是新时代的基石。 IBM中国研究院开发的超能云(SuperVessel)平台提供了给区块链爱好者、开发者的区块链开发测试环境。通…

DataGrid的几个小技巧
作者:网际浪子专栏(曾用名littlehb) http://blog.csdn.net/littlehb/方法一:使用模版列 我们在绑定好数据的DataGrid增加一个模版列,在列中放置一个按钮<asp:TemplateColumn><ItemTemplate><asp:Button id"btnDelete&q…
32岁程序员面试被拒:比又穷又忙更可怕的,是2020年你还不懂...
在大学阶段,大家都学过概率论、线性代数和微积分的课程,但是为什么在面对机器学习中的数学问题时,却有一种天书的既视感?第一,大学课程中的知识点并没有完全覆盖机器学习领域所需。 回想一下大学概率统计课程内容的内容…

DHCP tftp PXE实现Ghost网络克隆
概述:加ghost参数,实现客户端只需连接网线,在无光驱、软驱的情况下,且无需其他配置,完成网络克隆。所要用到的软件:1、ghost 8.2 企业版中的Ghost Boot Wizard(其中的ghost.exe程序可以用ghost1…

PHP文件上传和文件操作案例
<?php /**文件配置变量$dirname是目录名称*/ session_start(); $dirname upload; $fileClass new fileClass($dirname); $fileClass -> fileCMM();/*文件重命名操作*/ $fileClass -> fileDelete();/*文件删除操作*/ ?> <!DOCTYPE html> <html> <…

将模式对话框的返回值回送(PostBack)到服务端
作者:张老三的专栏 http://blog.csdn.net/billy_zh/在一些应用中,希望将模式对话框的值回送(PostBack)到服务端,也就是执行一个服务端操作,从而刷新页面。举个例子:比方说新建一个订单,此时希望能在模式…

android zip解压缩(含有子目录)
为什么80%的码农都做不了架构师?>>> note: 如果目录中含有中文名称, 要用substr new String(substr.getBytes("8859_1"), "GB2312");这样的语句转换,否则为乱码 /*** 解压缩功能.* 将ZIP_FILENAME文件解压…
用Python实现抖音上的“人像动漫化”特效,原来这么简单
作者 | 黄伟呢来源 | 数据分析与统计学之美前几天,女友拉着我和她玩儿抖音,就是这个人像动漫化的操作,顿时觉得很好玩儿。我心想:Python 既然这么强大,是不是也可以使用 Python 程序来实现这样一个操作呢?哈…

easyui在IE中: SCRIPT1003: 缺少 ':'
转载于:https://www.cnblogs.com/FredLee/p/5894614.html
NumPy学的还不错?来试试这20题
来源 | 早起Python(ID: zaoqi-python)又到了NumPy进阶修炼专题。NumPy大家应该不陌生了,看了太多的原理讲解之后,用刷题来学习是最有效的方法,本文将带来20个NumPy经典问题,附赠20段实用代码,拿…

tomcat报 Context [] startup failed due toprevious errors
今天同事在实施项目中,遇到一个问题,就是项目布到tomcat服务器上了,却总是找不到访问路径.tomcat报 Context [] startup failed due toprevious errors 当时就觉的很郁闷,项目是本机测试完整打包的.按以前的项目实施也很少出现这样的问题.在网上搜索以下解决方案: ------解决方…