天天看點

ASP.NET(C#)向資料庫添加及顯示圖檔

第一次寫文章,而且還是個新手,請各位多多見諒。

程式效率不一定高,但是能保證是對的。

隻是寫出來供那些和我一樣也是新手,并且還在找尋方法的兄弟們。

請各位前輩們多多指點,謝謝啦。

存儲圖檔

1.

AddImage.aspx

添加個<input type="file">标簽 和<img>标簽

<input type="file" runat="server" id="file" οnchange="javascript:document.all('img').src=this.value"/>

<img id="img" alt="圖檔"/>

作用:通過input标簽選擇本地的圖檔後,圖檔可以在img标簽上預覽

2.

AddImage.cs

        private int imageSize;//存儲本地圖檔的長度

        private string imageType;//存儲本地圖檔的類型

        private Stream imageStream;//存儲本地圖檔的流

        imageSize = file.PostedFile.ContentLength;

        imageType = file.PostedFile.ContentType; 

        imageStream= file.PostedFile.InputStream;

        byte[] ImageContent;//建立一個byte數組用于存儲圖檔的内容

        ImageContent = new byte[imageSize];//數組長度為圖檔的長度

        int intStatus = imageStream.Read(ImageContent, 0, imageSize);

        // 寫入資料庫,我用的是存儲過程

        SqlParameter[] parameters = {

                                                         new SqlParameter("@Img", SqlDbType.Image),

                                                         new SqlParameter("@ImgType", SqlDbType.NVarChar,50)};

            parameters[0].Value = ImageContent;

            parameters[1].Value = imageType;

            string strSql = "PRO_InsertImg";

            //存儲過程為:

            //@Img Image, 

            //@ImgType nvarchar(50)

            //As 

            //Begin 

            //Insert into dbo.ImgInfor

            //Values 

            //(@Img, @ImgType) 

            //End

            SqlConnection con = new SqlConnection(conStr);//conStr是連接配接資料庫字元串

            con.Open();

            SqlCommand cmd = new SqlCommand(strSql, con);

            cmd.CommandType = CommandType.StoredProcedure;

            if (parameters != null)

            {

                foreach (SqlParameter parameter in parameters)

                {

                    cmd.Parameters.Add(parameter);

                }

            }

            try

            {

                cmd.ExecuteNonQuery();

                con.Close();

            }

            catch (Exception SQLExe)

            {

                Response.Write("添加失敗!原因:" + SQLExe.ToString());

            }

--------------------------------------------------------------------------------------------------------------------------------------------

顯示圖檔

1.

建立一個ShowImage.aspx

添加Image控件用于顯示資料

<asp:Image id="Img" Width="100px" Height="100px" runat="server" ></asp:Image>

不過因為Image控件不能顯示二進制的圖檔,是以再建立一個Img.aspx用于顯示圖檔。

再将此Image控件的ImageUrl指向Img.aspx

這樣就可以在Image控件上顯示資料庫中的圖檔了

2.

ShowImage.cs

            Img.ImageUrl = "Img.aspx";//把Image控件的Url指向Img.aspx頁面

3.

Image.cs

            string strSql;

            strSql = "select top 1 Img,ImgType from ImgInfor";

            // 讀取資料庫的資料

            SqlConnection con = new SqlConnection(conStr);//conStr是連接配接資料庫字元串

            SqlDataAdapter adapter = new SqlDataAdapter(strSql , con);

            DataSet ds=new DataSet();

            adapter.Fill(ds,"ImgInfor");

            DataTable table = ds.Tables["ImgInfor"];

            Response.ContentType = table.Rows[0].ItemArray[0].ToString().Trim();

            Response.BinaryWrite((byte[])table.Rows[0].ItemArray[1]);

以上

上面寫的代碼都沒有在函數中,大家要使用的話,可以截取相應的部分添加到自己的函數或是事件中即可