zoukankan      html  css  js  c++  java
  • asp.net(c#)从数据库里读取图片并显示到页面

    上一篇我说了怎么将图片保存到数据库,这里我说一下,怎么将图片从数据库中提取出来并显示到页面中。

    图1:直接在页面输出二进制图片。

    图二:动态添加Image和显示多张图片使用一般处理程序。

       

     这里我就不讲怎么读取第一种的方法了,因为太简单了,只是读取路径出来再将路径赋给你想要绑定的控件上就可以了。这里我只是单独讲一下,怎么读取二进制流的图片。

        为了简单点讲,我就只是在页面显示一张图片。在page_load()事件里写上如下代码:

         //连接数据库

         SqlConnection cn= new SqlConnection("server=.;uid=sa;pwd=****;database=za");

        //这里就是从数据库提取id为1 的数据,这里显得硬编码了,只是为了简单,你可以传值过来让其获值
         SqlCommand cm = new SqlCommand("select imagedata from myimage where id=1"conn1);
         cn.Open();
         SqlDataReader dr = cmd1.ExecuteReader();
         if (dr.Read())
         {
                Response.BinaryWrite((byte[])sdr["imagedata"]);
         }
            Response.End();

         在显示数据的时候我们用到了Response的BinaryWrite的方法,它将二进制字符串写进HTTP输出流。

         这里我还想说的是,就比如上面的方法我们在页面的Load事件里写了,然后就可以在其他的页面调用;

         this.Image1.ImageUrl = "imagestore.aspx";

          以达到相同的效果。

          这里还有就是从数据库里把数据取出来显示多张图片。用到的是Handler.ashx这个一般处理程序来提取图片然后绑定,首先我们新建一个Handler.ashx,然后在 public void ProcessRequest (HttpContext context)方法下写如下代码:

        public void ProcessRequest (HttpContext context)

       {
            int id = int.Parse(context.Request.QueryString["id"]);
            SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=****;database=za");
            SqlCommand cmd = new SqlCommand ("select imagedata from myimage where id=@id", conn);
            cmd.Parameters.Add("@id", SqlDbType.Int);
            cmd.Parameters["@id"].Value = id;
           
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.Read())
            {
                context.Response.BinaryWrite((byte[])dr["imagedata"]);
            }
            dr.Close();
        }
         这样我们新建一个WEB网页,在里面加一个GridView,用来绑定:

         <asp:GridView ID="GridView1" runat="server" 
            DataSourceID="SqlDataSource1">
            <Columns>
                <asp:TemplateField HeaderText="图片">
                    <ItemTemplate>
                        <asp:Image ID="Image1" runat="server" ImageUrl ='<%# "Handler.ashx?

    id="+eval_r("id") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

     这样可以用GridView显示多幅图片。

          我们也可以用其他的方法显示图片,还有其他的方法,其他好友若有其他的方法,留言跟我联系探讨

  • 相关阅读:
    C Socket编程之Connect超时 (转)
    【c#】设置Socket连接、接收超时(转)
    socket测试远程地址能否连接并为连接设置超时(转)
    ZedGraph右键菜单怎样禁止它弹出(转)
    赚钱本身就是人生目的
    如果一个女人喜欢你,又不跟你在一起,而且只跟你很暧昧,那代表什么
    LayoutInflater的使用
    Android应用程序的生命周期
    Android的系统服务一览
    Android系统服务-简介
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2001548.html
Copyright © 2011-2022 走看看