如何读取二进制图片-.ashx一般处理程序 --1---(转载)

我看过了很多关于如何在页面中显示二进制图片的方式。都很好,可觉得其实用性不是很强。我介绍一种方式希望实用性能强一点。
    利用“一般处理程序”。如果你实用的是vs2005你在添加新项中可以见到“一般处理程序”,它的后缀名为.ashx。它是什么?其实它和.aspx很类似。先问问.aspx是如何工作的?也许你知道,.aspx能处理来自外部传入的请求,然后它还能处理这个请求并生成一个html作为结果返回。这是典型的处理外部请求的方式。.aspx就是专门为处理“典型”的请求而出现的。那么如果我们现在需要一种又能处理外部请求又需要我们自定义的处理这个请求那又要怎么做呢?(也就是不实用“典型”的方式来处理)。.ashx就能帮你做到这一点。
    上面描述的东西又怎么能帮你建立你想要的东西呢?这也是我要讲述的主体。不过还是得先看看.ashx是什么。

<%@ WebHandler Language="C#" Class="ImageHandler" %>

using System;
using System.Web;
/// <summary>
/// 这就一个没有任何实现的一般处理程序。
/// </summary>
public class ImageHandler : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        context.Response.Write("Hello World");
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

}

首先你发现 <%@ WebHandler Language="C#" class="ImageHandler" %>这句话。想想一个ASP.NET的页面是不是也有类似的东西。其实它表明了现在的这个文件可以处理一个来自外部的请求。当然就它是不行的。
    接下来关键的东西就是底下建立的类,它实现了一个关键的接口:IHttpHandler。实现这个接口表明你现在将以何种方式来处理来自外部的请求。其中有一个方法和属性需要实现,你可以在ProcessRequest方法中编写如何处理请求的细节而IsReusable表明其它的请求是否可以使用这个类的一个实例。我们可以暂时忽略IsReusable属性。将焦点转到ProcessRequest方法上。在ProcessRequest中有一个参数context它是一个HttpContext类型,context对象提供对用于为 HTTP 请求提供服务的内部服务器对象(如 Request、Response、Session 和 Server)的引用。也就是可以访问我们的几大服务器对象。
    现在来看个简单的例子。
    请在你自己建立的WEB站点文件夹中随便放一个图片。我的想法是这样,我先将一个图片读取成一个二进制的数据然后在将这个二进制的数据转变成一个图片。这其中需要你建立两个文件。一个.ASPX文件和现在我们要实用的.ASHX文件。
  
   文件ImageHandler.ashx

<%@ WebHandler Language="C#" Class="ImageHandler" %>

using System;
using System.Web;
/// <summary>
/// 这就一个没有任何实现的一般处理程序。
/// </summary>
public class ImageHandler : IHttpHandler {
    
    public void ProcessRequest (HttpContext context)
    {
        //获取虚拟目录的物理路径。 
        string path = context.Server.MapPath("");
        //获取图片文件的二进制数据。
        byte[] datas = System.IO.File.ReadAllBytes(path + "\\U1513.jpg");
       //将二进制数据写入到输出流中。
        context.Response.OutputStream.Write(datas, 0, datas.Length);
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

}

default.aspx文件

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Image ID="Image1" runat="server"  ImageUrl="~/ImageHandler.ashx"/></div>
    </form>
</body>
</html>

注意上面的代码:<asp:Image ID="Image1" runat="server"  ImageUrl="~/ImageHandler.ashx"/></div> 中ImageUrl指向的是ImageHandler.ashx文件。
这样就完成了。源代码下载
    我将在后续的文章中继续讲解高级的使用。

时间: 2024-08-06 04:34:53

如何读取二进制图片-.ashx一般处理程序 --1---(转载)的相关文章

数据库读取二进制图片显示到PictureBox中

1.已知路径,加载本地图片到Image中 Image img = Image.FromFile("路径"); 2.数据库中读取二进制图片 string strSql = "Select Top 1 ImageContent From TT_ImageFileSave)"; Byte[] byteImage = new Byte[0]; byteImage = (Byte[])(DbHelperSQL.GetSingle(strSql)); MemoryStream

如何读取二进制图片-Gridview中显示二进制图片 --2--(转载)

上一次描述了如何读取一张图片.现在来讲讲更为实际的使用.在GridView中读取数据库中保存的图片信息.我讲采用vs2005 + sqlServer2000.访问有名的Northwind数据库中的Employee表.其中Employee表中的photo中保存了员工的信息(image类型).我要做的是讲每一个员工的信息都显示出来包括他们的图片信息.    注意:        1.photo中的信息是二进制的,其中有效的图片信息是从第78位开始的.所以当你想要转换图片信息的时候应该从第78位开始.

从数据库读取二进制图片,img标签显示图片

引自 http://www.w3dev.cn/article/20110214/asp-net-csharp-image-base64-change.aspx      <img src="@myPicc.ImageInfo" type="image/jpeg" /> 直接给src图片的二进制是不允许的,但是支持base64字符串形式,在后台转化二进制为base64string格式传给前台. data:images/gif;base64,"转化

struts2读取二进制图片并显示

struts.xml配置 <action name="activitiAction_*" class="activitiAction" method="{1}"></action> action文件xxxAction.java: /**  * 生成图片  *   * @return  * @throws IOException  */ public void generateDiagram() throws IOExcep

ashx一般处理程序(转载)

原文地址:http://blog.csdn.net/wanda39kela/article/details/46118839 .NET里面webform的后缀是aspx WCF和WebService的后缀是asmx 四个疑问: 1.什么时候用 2.优缺点 3.简单实现机制 4.简单DEMO 1.什么时候用 虽然通过标准的方式可以创建处理程序,但是实现的步骤比较复杂,为了方便网站开发中对处理程序的应用,从Asp.net 2.0开始,asp.net提供了称为一般处理程序的处理程序,允许我们使用比较简

[.ashx檔?泛型处理程序?]基础入门#5....ADO.NET 与 将DB里面的二进制图片还原 (范例下载 &amp; 大型控件的ImageField)

[.ashx檔?泛型处理程序?]基础入门#5....ADO.NET 与 将DB里面的二进制图片还原 (范例下载 & 大型控件的ImageField) http://www.dotblogs.com.tw/mis2000lab/archive/2014/05/19/ashx_beginner_05_db_picture_show_download.aspx 根据前面三篇文章的教学 完成后可以做出来  (请您务必依照顺序学习,不要只是找范例来Copy) [.ashx檔?泛型处理程序?]基础入门#1.

php二进制图片转换

先介绍: $_POST:通过 HTTP POST 方法传递的变量组成的数组.是自动全局变量. $GLOBALS['HTTP_RAW_POST_DATA'] :总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据.此变量仅在碰到未识别 MIME 类型的数据时产生.$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用. 也就是说基本上$GLOBALS['HTTP_RAW_POST_DATA']

【原创】Android 4.4前后版本读取图库图片方式的变化

Android 4.4前后版本读取图库图片方式的变化 本文讲述Android 4.4(KitKat)前后访问图库以及访问后通过图片路径读取图片的变化 Android 4.4(KitKat)以前: 访问图库(方法一): 1 /** 2 * Access the gallery to pick up an image. 3 */ 4 private void startPickPhotoActivity() { 5 Intent intent = new Intent(Intent. ACTION_

读取本地图片写到jsp页面

//读取本地图片写到jsp页面 File file = new File("D:/parking/A区12号.jpg"); ServletOutputStream out = null; InputStream in = null; try { in = new FileInputStream(file); response().setContentType("multipart/form-data"); int tempbyte; out = response()