`

.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;
        }
    }
}

 

分享到:
评论

相关推荐

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

    读取图片的二进制流,存到数据库中读取图片的二进制流,存到数据库中读取图片的二进制流,存到数据库中读取图片的二进制流,存到数据库中

    delphi读写sqlserver二进制字段image

    使用delphi读写sqlserver中image字段,可以读取dmp,jpg,gif等格式的图片,至于二进制文件没有尝试过。

    如何将图片转换成二进制存储

    存储图片:以二进制的形式存储图片时,要把数据库中的字段设置为Image数据类型(SQL Server),存储的数据是Byte[]. 1.参数是图片路径:返回Byte[]类型: public byte[] GetPictureData(string imagepath) { /**/////...

    图片的读取与存储(二进制形式)

    类似与很多网站的注册功能以及相册展示功能 写了这个小列子 数据库 设计很简单就一个简单的表 两个字段 id和Image类型的content字段(用来存放图片用二进制读取的内容)还有一个存储过程(我喜欢用存储过程)数据库...

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

    C# 对SqlServer中Image字段的读写的思路是将图片转换为二进制在向数据库写.

    Delphi XE10 二进制图片存储和读取示例.rar

    Delphi XE10 二进制图片存储和读取的代码示例,二进制图片操作。主要就是流操作,代码注释里讲了几个注意的细节,附加测试数据库;Image 默认支持BMP JPG对象需显示的从文件流中初始化,Assign 在Image加载对象前 ...

    .Net下二进制形式的文件(图片)的存储与读取详细解析

    .Net下图片的常见存储与读取凡是有以下几种:存储图片:以二进制的形式存储图片时,要把数据库中的字段设置为Image数据类型(SQL Server),存储的数据是Byte[]. 1.参数是图片路径:返回Byte[]类型: 代码如下:public byte...

    通过ADO 对数据库进行二进制文件写入 读取 保存 容器 map

    通过ADO对数据库进行读写的开发实例,SQL数据库Image字段的读写 通过map容器进行图像显示

    c# 读取Northwind数据库image字段

    这里值得一提的是,web控件image不像winForm控件那样可以通过读取二进制流赋值给image属性来显示图像。可以通过变通的方法来实现,流行的做法是新建一个页面专门用来显示图像,这里代码直接用孟子E章前辈的(作了小...

    C# 文件保存到数据库中或者从数据库中读取文件

    将文件保存到数据库中,实际上是将文件转换成二进制流后,将二进制流保存到数据库相应的字段中。在SQL Server中该字段的数据类型是Image,在Access中该字段的数据类型是OLE对象。 代码如下://保存文件到SQL Server...

    数据库设计与优化.pdf

    少用 TEXT 和 IMAGE,二进制字段的读写是比较慢的,而且,读取的方法也不多,大部分情况下最好不用。 自增字段要慎用,不利于数据迁移。 1.3.6 数据库物理存储和环境的设计 在设计阶段,可以对数据库的物理存储、...

    C#编程经验技巧宝典

    91 &lt;br&gt;5.1 数字处理技巧 92 &lt;br&gt;0140 如何对计算结果四舍五放入 92 &lt;br&gt;0141 如何将商品金额小写转换成大写 92 &lt;br&gt;0142 如何根据生日自动计算员工年龄 93 &lt;br&gt;0143 如何设置货币值中使用...

    文件资源管理器/加密资源库/DoSeenPic/防复制

    //FileData为加密的二进制数据,正确的Image读取读取方法 //byte[] by = (byte[])dt.Rows[i]["FileData"]; //System.IO.MemoryStream ms = new System.IO.MemoryStream(Link.DataLink.EnCode(by)); //Image img=...

    Python Cookbook

    1.11 检查一个字符串是文本还是二进制 23 1.12 控制大小写 25 1.13 访问子字符串 26 1.14 改变多行文本字符串的缩进 29 1.15 扩展和压缩制表符 31 1.16 替换字符串中的子串 33 1.17 替换字符串中的子串-Python...

    cmd操作命令和linux命令大全收集

    copy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件,注:2st.txt文件头要空三排,参数:/b指二进制文件,/a指ASCLL格式文件 copy ipadmin$svv.exe c: 或:copyipadmin$*.* 复制...

Global site tag (gtag.js) - Google Analytics