当前位置: 首页 > news >正文

Asp.Net中级 - 5.HttpHandler案例

HttpHandler1


(1) HttpHandler是对请求的响应,可以输出普通的html内容,也可以输出图片、也可以输出一个文件(下载)

(2) 输出一幅动态创建的图片(能看懂就可以)

(3) 案例1:图片中显示访问者信息

image
image

(4) 案例2:填入朋友的姓名就能生成恶搞的图片链接


(5) 网上看到的注册、登录时候的验证码也是动态生成的图片、55.la也是这样实现的原理。

 

HttpHandler实现文件下载


(1) 如果HttpHandler输出的是html、txt、jpeg等类型的信息,那么浏览器会直接显示,如果希望弹出保存对话框,则需要添加Header:string encodeFileName = HttpUtility.UrlEncode("过滤词.txt"); Response.AddHeader("Content-Disposition", string.Format("attachment;filename=\"{0}\"", encodeFileName));其中filename后为编码后的文件名。filename段为建议的保存文件名

示例:

(1)第一步

xiazai1.aspx
<form id="form1" runat="server">
    <div>
    <a  href="2013-05-07 21-05-25.png">图片1</a>
    </div>
    </form>

image

 

(2)第二步

xiazai1.aspx更改
<form id="form1" runat="server">
        <div>
            <a href="2013-05-07 21-05-25.png">图片1</a>
            
<a href= "./xiazai2.ashx">图片2</a>
        </div>
    </form>

xiazai2.ashx

public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "image/jpeg";
        context.Response.AddHeader("Content-Disposition", "attachment;filename=image2.jpg");
        context.Response.WriteFile("2013-05-07 21-05-25.png");
    }

 

(3)第三步

如果保存为中文名,就会出现乱码。

public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "image/jpeg";
        context.Response.AddHeader("Content-Disposition", "attachment;filename=脑残.jpg");
        context.Response.WriteFile("2013-05-07 21-05-25.png");
    }

image

需要对 脑残.jpgUrlEncode

public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "image/jpeg";
        string filename = HttpUtility.UrlEncode("脑残.jpg");
        context.Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
        context.Response.WriteFile("2013-05-07 21-05-25.png");
    }

image

 

(2) 动态输出用处,不用再把资源保存到磁盘上再输出(不会有文件重名的问题,文件不生成在服务器端)。案例:点击链接弹出图片下载对话框。Web的原则:能直接将生成的内容以流的形式输出给浏览器,就不要生成临时文件。

(3) 用NPOI动态生成一个Excel表然后弹出对话框让用户下载,文件名是“用户列表.xls”。

(4) 练习:从数据库用户表导出数据到Excel文件,让用户下载。mdf放到App_Data下,asp.Net不用那段设置DataDirectory的代码,用DataReader的方式读取数据

(5) 练习:用户表增加一个级别字段。只有登录用户才能下载images下的图片文件(Session中标识是否登录),如果用户没有登录则首先重定向到登录界面让用户登录,用户登录成功则跳转到下载列表页面,下载链接固定写好即可。如果登录用户是普通用户则在图片左上角加上“免费用户试用”的字样。“安全退出”。画页面流程。

(6) 练习:给上面的程序加上登录验证码。

 

(没仔细看。想看详细的朋友自己去看看吧)

【传智播客.Net培训—asp.net中级】8HttpHandler练习说明.avi

~

~

~

【传智播客.Net培训—asp.net中级】13案例:图库权限控制4.avi

相关文章:

  • Bootstrap学习笔记(一)-----表单
  • MySQL体系结构图
  • [JMS 3] ActiveMQ实现简单的helloworld
  • nullnull阿里巴巴2013实习生招聘笔试题
  • iOS:OC与JS交互
  • 从C到iOS基础知识各阶段的书籍及提高实战图书推荐
  • [nginx] 网上最全面nginx教程(近100篇文章整理)
  • ios工程文件的重命名
  • Linux基础命令小结(下)
  • Python~字典
  • 回顾下最小重量机器设计问题
  • python urlencode 编码
  • Core Data
  • c++两个类相互调用需要注意的问题
  • sizeof的主要用法
  • [nginx文档翻译系列] 控制nginx
  • __proto__ 和 prototype的关系
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • ES6核心特性
  • java概述
  • Java知识点总结(JavaIO-打印流)
  • spark本地环境的搭建到运行第一个spark程序
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 基于 Babel 的 npm 包最小化设置
  • 浏览器缓存机制分析
  • 前端js -- this指向总结。
  • 如何在 Tornado 中实现 Middleware
  • 入手阿里云新服务器的部署NODE
  • 用element的upload组件实现多图片上传和压缩
  • 仓管云——企业云erp功能有哪些?
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​2020 年大前端技术趋势解读
  • ​人工智能书单(数学基础篇)
  • # 数论-逆元
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • $.ajax()
  • (11)MSP430F5529 定时器B
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Java数据结构)ArrayList
  • (ZT)一个美国文科博士的YardLife
  • (二)fiber的基本认识
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转)一些感悟
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .net mvc 获取url中controller和action