ReadImage.aspx.cs代码如下:   using  System;  
  using  System.Data;  
  using  System.Data.SqlClient;  
  using  System.Web.UI;  
  using  System.Web.UI.WebControls;  
  using  System.Web.UI.HtmlControls;  
  namespace  ReadImage  {  
  public  class  MainDisplay  :  System.Web.UI.Page  
  {  
  public  void  Page_Load(System.Object  sender,  System.EventArgs  e)  
  {  
          int  ImgID  =  Convert.ToInt32(Request.QueryString["ImgID"]);  //ImgID为图片ID  
          //建立数据库链接  
          SqlConnection Con = new SqlConnection("Data Source=Localhost; Initial Catalog=EX_NEW; 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();  
          
  }  
  }  
  }  

解决方案 »

  1.   

    一般情况,图片在数据库中以64位字符保存。你查询时根据ID吧,要查的图片名称和保存的64为字符列找到。然后再吧64为字符通过流,转换成图片保存就可以了。
     /// <summary>
            /// 对任意类型的文件进行base64加码
            /// </summary>
            /// <param name="filePath">文件的路径和文件名</param>
            /// <returns>对文件进行base64编码后的字符串</returns>
            public static string FileToString(string filePath)
            {
                if (!string.IsNullOrEmpty(filePath) && File.Exists(filePath))
                {
                    System.IO.FileStream fs = System.IO.File.OpenRead(filePath);
                    System.IO.BinaryReader br = new System.IO.BinaryReader(fs);                string base64String = Convert.ToBase64String(br.ReadBytes((int)fs.Length));                br.Close();
                    fs.Close();
                    return base64String;
                }
                else
                {
                    return "";
                }
            }
      /// <summary>
            /// 把经过base64编码的字符串保存为文件
            /// </summary>
            /// <param name="base64String">经base64加码后的字符串</param>
            /// <param name="fileName">保存文件的路径和文件名</param>
            /// <returns>保存文件是否成功</returns>
            public static bool StringToFile(string base64String, string fileName)
            {
                //string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase) + @"\beapp\" + fileName;
              
                System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Create);
                System.IO.BinaryWriter bw = new System.IO.BinaryWriter(fs);
                if (!string.IsNullOrEmpty(base64String) && File.Exists(fileName))
                 {
                    bw.Write(Convert.FromBase64String(base64String));
                 }
                bw.Close();
                fs.Close();
                return true;
            }
      

  2.   

    上边那段代码,我是绑定了数据库里的ImageID,但我想的是:做一个查询页面,里边有一个输入框和一个按钮,一个Image控件,按钮的逻辑应该是:一按下按钮,就去查询输入框里输入的ID.然后Image控件显示该图片!
    问题是,我不会写那个按钮的逻辑!
      

  3.   

    byte[]=查詢結果
    stream=IO.MemoryStream(byte[])
    image.FromStream(stream)
    基本上就是这样
      

  4.   

    using System;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void Button1_Click(object sender, EventArgs e)
        {
    *********************************************************
        }
    }
    我想知道的,就是这个"**"这个代码如何写!是要先连数据库,还是不用连,直接调用,我1楼绑定的ID.
      

  5.   

    Default.aspx代码:<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" 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:TextBox ID="Ima" runat="server"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
                style="height: 26px" Text="Button" />
            
            <img src='Default.aspx?ImgID= <%#Eval("ID")%>' style="width: 198px">
        </div>
        </form>
    </body>
    </html>
    Default.aspx.cs代码:
    using System;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;using System.Data.SqlClient;
    public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void Button1_Click(object sender, EventArgs e)
        {
            SqlConnection Con = new SqlConnection("Data Source=Localhost; Initial Catalog=EX_NEW; User ID=sa;Pwd=photosystem;");
      String SqlCmd = "SELECT   *   FROM   ImageStore   WHERE   ImageID   =   @ImageID";
      SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
      CmdObj.Parameters.Add("@ImageID", SqlDbType.Int).Value = Convert.ToInt32(Ima);
      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();   
        }
    }"CmdObj.Parameters.Add("@ImageID", SqlDbType.Int).Value = Convert.ToInt32(Ima);"报错:"无法将类型为“System.Web.UI.WebControls.TextBox”的对象强制转换为类型“System.IConvertible”。"