我把图片用二进制形式(byte[])存入了数据库的image类型字段中,请问如何将它读取到image控件上? 

解决方案 »

  1.   

    没听说用image控件能直接读出 数据库中的图片.
      

  2.   

    建议先将图片读取出来到本地机器上,然后指定image控件的URL吧
      

  3.   

    还是把图片地址存到数据库里吧,直接把值给src就行了,要不数据库很大
      

  4.   

    哎,老总硬要把图片存入数据库我也没办法,到底image控件怎样读取数据库啊
      

  5.   

    int  ImgID  =  Convert.ToInt32(Request.QueryString["ImgID"]);   //ImgID为图片ID  
           //建立数据库链接  
           SqlConnection  Con  =  new  SqlConnection("Data  Source=KING;Initial  Catalog=testdb;User  ID=sa;Pwd=;");  
           String  SqlCmd  =  "SELECT  *  FROM  ImageStore  WHERE  ImageID  =  @ImageID";  
           SqlCommand  CmdObj  =  new  SqlCommand(SqlCmd,  Con);  
           CmdObj.Parameters.Add("@ImageID",  SqlDbType.Int).Value  =  ImgID;  
           Con.Open();  
           SqlDataReader  SqlReader  =  CmdObj.ExecuteReader();  
           SqlReader.Read();         
           Response.ContentType  =  (string)SqlReader["ImageContentType"];//设定输出文件类型  
           //输出图象文件二进制数制  
           Response.OutputStream.Write((byte[])SqlReader["ImageData"],  0,  (int)SqlReader["ImageSize"]);         
           Response.End();  
           Con.Close();  
    详细的你可以去这找找
    www.chinabs.net
      

  6.   

    好办
    <asp:Image id="Image1" style="Z-INDEX: 106; LEFT: 536px; POSITION: absolute; TOP: 336px" runat="server"
    ImageUrl="ShowFile.aspx?keyid=9"></asp:Image>ShowFile.aspx.cs
    private void Page_Load(object sender, System.EventArgs e)
    {
    if (Request["keyid"]!=null)
    {
    clsUpDownFile clu=new clsUpDownFile();
    string atttable="CYMailReceiveAdjunct";
    string filetype;
    string filename;
    byte[] filebody=clu.DownFileFromDB(atttable,Request["keyid"].ToString(),out filetype,out filename);
    this.Response.ContentType=filetype;
    this.Response.AppendHeader("Content-Disposition","attachment;filename="+ HttpUtility.UrlEncode(filename));
    this.Response.BinaryWrite(filebody);
    this.Response.End();
    }
    }byte[] filebody是文件的二进制数组。你只要能得到这个样,不管是从数据库里取出的还是从硬盘上取的都没有区别了。public byte[] DownFileFromDB(string tablename,string keyid,out string filetype,out string filename)
    {
    try
    {
    this.lDB=new clsODBCDB();
    this.lDB.SqlStr="SELECT filetype,filename,filebody FROM "+tablename+" WHERE id="+keyid;
    if (this.lDB.ExeSql())
    {
    if (this.lDB.ResultTable.Rows.Count>0)
    {
    filetype=this.lDB.ResultTable.Rows[0]["filetype"].ToString();
    filename=this.lDB.ResultTable.Rows[0]["filename"].ToString();
    return (byte[])this.lDB.ResultTable.Rows[0]["filebody"];
    }
    else
    throw new Exception();
    }
    else
    throw new Exception();
    }
    catch(Exception ex)
    {
    filetype="";
    filename="";
    return new byte[0];
    }
    }