`

.Net中使用一般处理程序读取数据库中Image类型(二进制)字段

阅读更多

前台代码:

 

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataSourceID="SqlDataSource1">
            <Columns>
                <asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID" 
                    InsertVisible="False" ReadOnly="True" SortExpression="EmployeeID" />
                <asp:BoundField DataField="LastName" HeaderText="LastName" 
                    SortExpression="LastName" />
                <asp:TemplateField HeaderText="Photo" SortExpression="Photo">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Photo") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate><!--这里调用一般处理程序!!!注意这里必须使用' '号否则会出错!-->
                       <img src='Handler.ashx?EmployeeId=<%#Eval("EmployeeId") %>' />                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
        <br />
        
    
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" 
            SelectCommand="SELECT [EmployeeID], [LastName] FROM [Employees]">
        </asp:SqlDataSource>

 

 注意:如果数据绑定表达式作为属性的值,只要数据绑定表达式中没有出现双引号,那么<%#数据绑定表达式%>的最外层用双引号或者单引号都可以。如果数据绑定表达式中出现双引号,则<%#数据绑定表达式%>的最外层最好要用单引号。

 

 HttpHanlder程序:

 

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

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Configuration;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

public class ImageHandler : IHttpHandler 
{
    //取得数据连接配置
    static ConnectionStringSettings connString = WebConfigurationManager.ConnectionStrings["NorthwindConnectionString"];

    public void ProcessRequest(HttpContext context)
    {
        MemoryStream ms=null;
        try
        {
            //取得员工代号
            string EmployeeID = context.Request.QueryString["EmployeeID"];
            //通过ReadImage类的GetImage()方法取得SQL Server中图片资料
            //建立Sql命令
            string strSQL = "Select Photo from Employees where EmployeeID=@paramEmployeeID";
            //建立SqlDataSource
            SqlDataSource sqldsPhoto = new SqlDataSource(connString.ConnectionString, strSQL);
            sqldsPhoto.SelectParameters.Add("paramEmployeeID", TypeCode.Int32, EmployeeID);
            //通过SqlDataSource进行查詢
            DataView dv = (DataView)sqldsPhoto.Select(DataSourceSelectArguments.Empty);
            //回传DataView第一个Row的Photo字段资料
            if (!(dv[0]["Photo"] is DBNull))
            {//注意:这里需要判断下是否是DBNull否则会报异常,虽然这个例子没有抛出异常.
                Byte[] PhotoImage = (Byte[])dv[0]["Photo"];
                ms = new MemoryStream(PhotoImage, 0, PhotoImage.Length);
            }   
        }
        catch
        {
        }
        
        if (ms != null)
        {
            //取得影像MemoryStream大小
            int bufferSize = (int)ms.Length;
            //建立 buffer
            byte[] buffer = new byte[bufferSize];
            //调用MemoryStream.Read,自MemoryStream 读取至buffer,并传回count
            int countSize = ms.Read(buffer, 0, bufferSize);
            //传回影像buffer
            context.Response.OutputStream.Write(buffer, 0, countSize);
        }
    }
 
    public bool IsReusable 
    {
        get 
        {
            return false;
        }
    }
}

 

分享到:
评论

相关推荐

    aspnet(C#)实现从sqlserver数据库中下载以二进制存储的图片

    在ASP.NET(C#)开发中,常常需要处理存储在SQL Server数据库中的二进制数据,例如图片、PDF文档等。本教程将详细讲解如何从数据库中下载这些以二进制形式存储的图片。 首先,我们需要了解数据库中二进制数据的存储...

    delphi读写sqlserver二进制字段image

    在使用Delphi进行数据库开发时,经常会遇到与SQL Server中的二进制字段类型"image"交互的情况。"image"字段通常用于存储大容量的二进制数据,如图片、文档或任何其他非文本数据。本篇文章将深入探讨如何在Delphi中...

    ASP.NET DataList 绑定数据库二进制图片

    `ImageUrl`属性可以设置为一个处理程序(Handler)URL,这个处理程序将负责从数据库中提取二进制数据并返回给浏览器。例如: ```html &lt;asp:Image ID="imgDisplay" runat="server" ImageUrl='("ImageID", ...

    vb.net 使用Access数据库保存和读取图片文件

    保存图片至数据库涉及读取图片文件,将其转换为字节数组,然后将该数组存储在数据库的二进制字段中。以下代码片段展示了如何实现这一过程: ```vbnet Dim openFileDialog1 As New OpenFileDialog() If ...

    从数据库中读取二进制图片

    2. 执行查询:编写SQL语句,通常是SELECT语句,用于选取存储图片的二进制字段。例如: ```sql SELECT image_column FROM images_table WHERE id = some_id; ``` 其中,`image_column`是存储图片二进制的列名,`...

    将图片二进制流存储到数据库中

    在某些数据库系统中,可能还需要使用特定的函数或方法来处理二进制数据,如MySQL的`LOAD DATA INFILE`或PostgreSQL的`BYTEA`类型。 5. **查询与恢复**:检索图片时,需要从数据库中提取BLOB字段,然后将其写入文件...

    ASP.NET图片以二进制上传数据库,并从数据库中显示

    第一个方法是`Button2_Click`事件处理函数,它打开数据库连接,创建一个SQL命令来获取`image`表中的`Image_Content`字段,然后使用`SqlDataReader`读取第一条记录的二进制数据。通过`Response.BinaryWrite`将这些二...

    WPF SQLite存储与读取二进制图片

    本篇文章将详细探讨如何在WPF应用中使用SQLite数据库来存储和读取二进制图片。 一、SQLite简介 SQLite是一款开源、无服务器、零配置、事务性的SQL数据库引擎,适用于嵌入式环境,无需额外的安装或管理。它支持标准...

    VC++使用ADO在数据库中操作长二进制数据

    // 假设rs是已打开的Recordset对象,且有一个名为"ImageData"的长二进制字段 rs-&gt;Fields-&gt;GetItem("ImageData")-&gt;PutValue(binaryData); ``` 3. **读取长二进制数据**: 要读取长二进制数据,可以使用`Field`对象的`...

    ASP.NET二进制图片显示(C#)

    在ASP.NET开发中,有时我们需要将图片以二进制数据的形式存储在数据库中,例如SQL Server的image类型字段。这个场景通常发生在大量图片管理、用户上传图片或需要节省服务器磁盘空间时。在这个主题中,我们将深入探讨...

    从数据库中读取图片二进制流,通过DataSet显示图片到水晶报表中

    例如,使用SqlCommand对象执行SQL语句,获取图片对应的二进制字段。执行后,结果集中的一行将包含图片的二进制数据。 ```csharp using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open()...

    图片二进制存入数据&从数据库中读取图片显示

    在这个过程中需要注意的是,数据库表需要有一个能够存储二进制数据的字段(例如SQL Server中的`Binary`类型)。具体步骤如下: - **准备SQL语句**:构建一个插入语句,其中包含需要插入的数据(如员工ID、客户端ID等...

    Delphi将图片以二进制方式存储在数据库BLOB字段中.rar

    BLOB(Binary Large Object)字段是数据库系统中用来存储大量二进制数据的类型,非常适合图像、音频或视频文件。 首先,理解BLOB字段的工作原理至关重要。BLOB字段可以存储任意大小的二进制数据,而不像传统的字符...

    Access数据库里二进制数据读取,并显示为图片.rar

    本主题聚焦于Access数据库中如何处理二进制大数据(Blob,Binary Large Object),特别是如何从数据库中读取这些二进制数据并将其显示为图片。 Access数据库中的二进制数据通常存储在“OLE对象”或“附件”字段中,...

    asp.net实现从数据库中下载以二进制存储的图片

    ### ASP.NET 实现从数据库中下载以二进制存储的图片 #### 背景介绍 在Web开发中,经常需要处理图像等多媒体文件。这些文件通常体积较大且格式多样,因此选择合适的方式进行存储至关重要。一种常见的做法是将图片以...

    .net 图片的二进制数据库存储和显示

    1. **从数据库读取二进制数据**:使用`SqlCommand`执行查询语句,获取存储在数据库中的二进制数据。 2. **将二进制数据转换为图片**:使用`MemoryStream`和`Image.FromStream()`方法将二进制数据转换为图片。 ```...

    图片存储到数据库保存二进制文件,并在DATAGRIDVIEW中显示出来

    - 当需要从数据库中获取图片时,查询相关记录,然后将返回的二进制数据读取到字节数组中。 - 使用`MemoryStream`从字节数组创建一个新的`Image`对象,从而恢复图片。 5. **在DataGridView中显示图片**: - ...

    C# 对SqlServer中Image字段的读写(例子)

    在SQL Server数据库中,`Image`数据类型用于存储大量的二进制数据,如图片、文档等。在C#编程环境中,我们经常需要处理这类数据,包括从数据库读取`Image`字段并显示为图片,或者将图片数据写入数据库。本篇文章将...

    将图片存放进数据库(转换成二进制流)

    "将图片存放进数据库(转换成二进制流)"这个主题,就是关于如何将图像文件以二进制形式存储到数据库中,然后从数据库中读取并以流的形式展示出来。下面我们将深入探讨这一技术。 首先,我们需要理解什么是二进制流...

Global site tag (gtag.js) - Google Analytics