• 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

  • 相关阅读:
    [C#] 逆袭——自制日刷千题的AC自动机攻克HDU OJ
    [安卓] 13、安卓蓝牙定位(一)——如何周期性获得蓝牙节点信号强度?
    [stm32] NRF24L01+USART搞定有线和无线通信
    [安卓] 12、开源一个基于SurfaceView的飞行射击类小游戏
    [安卓] 11、串口蓝牙·将软硬结合进行到底
    [安卓] 10、悬浮窗与获取其他任务信息
    [安卓] 9、线程、VIEW、消息实现从TCP服务器获取数据动态加载显示
    [安卓] 8、VIEW和SURFACEVIEW游戏框架
    [安卓] 7、页面跳转和Intent简单用法
    Git常用命令记录
  • 原文地址:https://www.cnblogs.com/tangge/p/3065552.html
Copyright © 2020-2023  润新知