创建一个表ImageNO  int类型 ; ImageContent  image类型   FileUpload1:一个VS2005的传输图片控件protected void Button1_Click(object sender, EventArgs e)
    {
      int intFile = FileUpload1.PostedFile.ContentLength;//获取上传文件大小
       byte[] PhotoArray = new byte[intFile];            
        
       SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=MyData;Integrated Security=True");
       conn.Open();        string strSQL = "";
        strSQL = "Insert into dmcimage(ImageContent) values(@ImageContent)";
        SqlCommand cmd = new SqlCommand(strSQL, conn);
        cmd.Parameters.Add("@ImageContent", SqlDbType.Image);
        cmd.Parameters["@ImageContent"].Value = PhotoArray;
        
         cmd.ExecuteNonQuery();
        
        conn.Close();
}问题1.上面这一段能把图片放进数据库吧?我测试时可能放进去了,在ImageContent下显示是《二进制数据》,应该存进去了吧?问题2.在 protected void Page_Load(object sender, EventArgs e)
    {
    }
中编写一个读出图片的程序,怎么写? 

解决方案 »

  1.   

    浏览图片:
    imgvies.aspx文件:
    <%@ Page language="c#" Codebehind="imgview.aspx.cs" AutoEventWireup="false" Inherits="study.uploadimage.imgview" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
     <HEAD>
      <title>imgview</title>
      <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
      <meta name="CODE_LANGUAGE" Content="C#">
      <meta name="vs_defaultClientScript" content="JavaScript">
      <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
     </HEAD>
     <body MS_POSITIONING="GridLayout">
     </body>
    </HTML>codebehind文件:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;namespace study.uploadimage
    {
     /// <summary>
     /// imgview 的摘要说明。
     /// </summary>
     public class imgview : System.Web.UI.Page
     {
     
      private void Page_Load(object sender, System.EventArgs e)
      {
       SqlConnection myDSN = new SqlConnection(Application["Test_Conn"].ToString());
       myDSN.Open();   int imgid = int.Parse(Request.QueryString["id"]);
       string sqlText = "SELECT img_name, img_data, img_contenttype FROM image where img_pk=" + imgid;
       Trace.Write(sqlText);
       SqlCommand MyCommand = new SqlCommand (sqlText, myDSN);
       SqlDataReader dr =MyCommand.ExecuteReader();
       if(dr.Read())
       {
        Response.ContentType = (dr["img_contenttype"].ToString());
        Response.BinaryWrite((byte[])dr["img_data"]);
       }   
       myDSN.Close();
      }  #region Web Form Designer generated code
      override protected void OnInit(EventArgs e)
      {
       //
       // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
       //
       InitializeComponent();
       base.OnInit(e);
      }
      
      /// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {    
       this.Load += new System.EventHandler(this.Page_Load);  }
      #endregion
     }
    }
      

  2.   


            HttpPostedFile UpFile = UP_File.PostedFile;
            FileLength = UpFile.ContentLength;        try
            {
                if (FileLength == 0)
                {
                    lblMessage.Text = "<b>请选择您要上传的文件</b>";
                }
                else
                {
                    Byte[] FileByteArray = new byte[FileLength];      
                    Stream StreamObj = UpFile.InputStream;   
                    StreamObj.Read(FileByteArray, 0, FileLength);                SqlConnection Con = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
                    String SqlCmd = "INSERT INTO ImageStore (ImageData,ImageContentType,ImageDescription,ImageSize) VALUES (@Image,@ContentType,@ImageDescription,@ImageSize)";
                    SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
                    CmdObj.Parameters.Add("@Image", SqlDbType.Binary, FileLength).Value = FileByteArray;
                    CmdObj.Parameters.Add("@ContentType", SqlDbType.VarChar, 50).Value = UpFile.ContentType;//记录文件类型       
                   
                    CmdObj.Parameters.Add("@ImageDescription", SqlDbType.VarChar, 200).Value = txtDescription.Text;
             
                    CmdObj.Parameters.Add("@ImageSize", SqlDbType.BigInt, 8).Value = UpFile.ContentLength;
                    Con.Open();
                    CmdObj.ExecuteNonQuery();
                    Con.Close();
                    lblMessage.Text = "<p><b>OK!你已经成功上传你的图片</b>";//提示上传成功               }
            }
            catch (Exception ex)
            {
                lblMessage.Text = ex.Message.ToString();
            }
            int ImgID = Convert.ToInt32(Request.QueryString["id"]);        SqlConnection Con = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);        String SqlCmd = "SELECT * FROM A WHERE ID = @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,Convert.ToInt32(SqlReader["ImageSize"]));
            Response.BufferOutput = true;
            Con.Close();       }
    参考