第一次 作存图片 ~ 麻烦大家看看啦
<form id="form1" method="post" runat="server" enctype="multipart/form-data"> private void Page_Load(object sender, System.EventArgs e)
{      
SqlConnection conn=new SqlConnection("database=mydemo;server=.;pwd=sa;uid=sa");  
SqlCommand cmd=new SqlCommand("select * from image where imgID='2'",conn);        
conn.Open();       
SqlDataReader dr=cmd.ExecuteReader();       
dr.Read();           
Response.ContentType=(string)dr["imgtype"];  // 这得的输出类型不是jpg  
Response.OutputStream.Write((byte[])dr["imgdate"],0,31);  //这的三个参数,后2个也不知道是什么...
Response.End();       
conn.Close();  
}
private void Button1_Click(object sender, System.EventArgs e)
{
Stream  myStream=up_data.PostedFile.InputStream;
int imgLan=up_data.PostedFile.ContentLength;
string imgType=up_data.PostedFile.ContentType;
string imgTitle=up_data.Value.ToString();
byte [] imgdata=new byte[imgLan];
int n=myStream.Read(imgdata,0,imgLan);
SqlConnection conn=new SqlConnection("database=mydemo;server=.;pwd=sa;uid=sa");
SqlCommand cmd=new SqlCommand("insert image (imgtitle,imgtype,imgdate) values (@imgtitle,@imgtype,@imgdate)",conn);
cmd.Connection = conn;
conn.Open();
cmd.Parameters.Add(new SqlParameter("@imgtitle",SqlDbType.NVarChar,50));
cmd.Parameters["@imgtitle"].Value=imgTitle;
cmd.Parameters.Add(new SqlParameter("@imgtype",SqlDbType.NVarChar,50));
cmd.Parameters["@imgtype"].Value=imgType;
cmd.Parameters.Add(new SqlParameter("@imgdate",SqlDbType.Image,50));
cmd.Parameters["@imgdate"].Value=imgdata;
cmd.ExecuteNonQuery();
conn.Close();
}本想用image显示,现在连直接输出到页上也显示不出来..郁闷  在线等,解决马上给分

解决方案 »

  1.   

    需要构造HTTP头...加缓冲区...例:Response.ContentType = "image/jpeg";
    Response.Cache.SetCacheability(HttpCacheability.Public);
    Response.BufferOutput = false;Stream stream = null;
    stream = ... //这里从数据库读取数据// 将图像流写入响应流中
    const int buffersize = 1024 * 16;
    byte[] buffer = new byte[buffersize];
    int count = stream.Read(buffer, 0, buffersize);
    while (count > 0) {
    Response.OutputStream.Write(buffer, 0, count);
    count = stream.Read(buffer, 0, buffersize);
    }
      

  2.   

    参考SqlConnection myConnection = new SqlConnection("server=.;database=test;uid=sa;pwd=;");
            SqlCommand myCommand = myConnection.CreateCommand();
            myCommand.CommandText="Select ImageContentType, ImageData from image Where ImgID='"+strImageID+"'";
            try
            {
                myConnection.Open();
                SqlDataReader myDataReader;
                myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
                if (myDataReader.Read())
                {
                    Response.Clear();
                    Response.ContentType = myDataReader["ImageContentType"].ToString();
                    Response.BinaryWrite((byte[])myDataReader["ImageData"]);
                }
                myConnection.Close();
            }
            catch (SqlException SQLexc)
            {
                Response.Write("提取数据时出现错误:" + SQLexc.ToString());
            }
            Response.End();
      

  3.   

    Response.ContentType = myDataReader["ImageContentType"].ToString();
                    Response.BinaryWrite((byte[])myDataReader["ImageData"]);
    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=调试跟踪这两句的输出内容都不对的
    ContentType ... 是text 和  html
    BinaryWrite... 是 System.Web.HttpResponse(Response).binaryWrite+0   ...不会...
      

  4.   

    http://blog.csdn.net/knight94/archive/2006/03/31/645987.aspx
      

  5.   

    完整例子http://dotnet.aspx.cc/article/17612afb-3fc0-4fb9-bfa9-00cba28336e9/read.aspx
    http://dotnet.aspx.cc/article/ey1xldyv-pidf-43lo-1wfl-fmy5ale1f635/read.aspx
      

  6.   

    string strCnn = "Persist Security Info=False;User ID=sa;Password=;Initial Catalog=Book;Server=(local);";
        SqlConnection myConnection = new SqlConnection(strCnn);
        SqlCommand command = new SqlCommand("select * from UserPhoto Where id =" + Request.QueryString["id"], myConnection);
        myConnection.Open();
        SqlDataReader dr = command.ExecuteReader();
        if (dr.Read())
        {
          Response.Clear();
          Response.AddHeader("Content-Type", dr["ContentType"].ToString());
          Response.BinaryWrite((byte[])dr["Photo"]);
        }
        dr.Close();
        myConnection.Dispose();-=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=-
    章哥  显示图片的方法和我一样    还是显示不出来的
      

  7.   

    byte[]   b=new   byte[1];   
      System.Data.SqlClient.SqlDataReader   dr=cm.ExcuteDataReader();   
      if(dr.read())   
      {   
      b=(byte[])dr["imagefield"];   
      }   
      System.IO.MemoryStream   ms=new   System.IO.MemoryStream();   
      ms.Write(b,0,b.Length-1);   
      this.Image1.Image=new   System.Drawing.Bitmap(ms);
      

  8.   

    this.Image1.Image 这个是什么??是控件?
      

  9.   

    我做過的例子,給你參考一下:
    #region  從二進制中讀出圖片
        /// <summary>
        /// 從二進制中讀出圖片
        /// </summary>
        /// <param name="idno">工號</param>
        /// <returns></returns>
        private string GetImageURL(string idno)
        {
            string strReturnPath = "";
            string connStr = "...";
            SqlConnection conn = new SqlConnection(connStr);
            conn.Open();
            string sqlStr = "select ...";
            SqlCommand cmd = new SqlCommand(sqlStr, conn);
            SqlDataReader reader;
            
            byte[] data = new byte[100];//二進制數組
            reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                data = (byte[])reader[0];//圖片的二進制
            }
            if (data.Length > 100)
            {
                MemoryStream ms = new MemoryStream();//定義一個流
                ms.Write(data, 0, data.Length);//將二進制寫入流
                System.Drawing.Image img = System.Drawing.Image.FromStream(ms);//放入IMG對象中
                Bitmap bitmap = new Bitmap(img);
                if (!System.IO.Directory.Exists(strLocalPath))//判斷是否存在這個文件夾
                    System.IO.Directory.CreateDirectory(strLocalPath);
                if (!System.IO.File.Exists(strLocalPath + idno + ".jpg"))//文件夾裡有就不用保存,否則會出錯
                    bitmap.Save(strLocalPath + idno + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);//保存的相對路徑
                bitmap.Dispose();
                strReturnPath = strLocalPath + idno + ".jpg";// 返回相對路徑
            }
            reader.Close();        return strReturnPath;//返回一個物理圖片路徑
        }
        #endregion        Response.Write(strReturnPath);//看看效果吧
      

  10.   

    把byte数组转成一个流,然后Image.FromStream进去。
      

  11.   

    this.Image1.Image   是什么...