程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> ASP.NET數據庫圖

ASP.NET數據庫圖

編輯:.NET實例教程
在很多時候,我們有這樣的需求:把圖片存入到數據庫當中。在一些應用程序中,我們可能有一些敏感的資料,由於存儲在文件系統(file system)中的東西,將很容易被某些用戶盜取,所以這些數據不能存放在文件系統中。

在這篇文章中,我們將討論怎樣把圖片存入到Sql2000當中。

在這篇文章中我們可以學到以下幾個方面的知識:

1. 插入圖片的必要條件

2. 使用流對象

3. 查找准備上傳的圖片的大小和類型

4.怎麼使用InputStream方法?

ASP.Net數據庫圖片存儲:插入圖片的必要條件

在我們開始上傳之前,有兩件重要的事我們需要做:

#Form 標記的 enctype 屬性應該設置成 enctype="multipart/form-data"

# 需要一個表單來使用戶選擇他們要上傳的文件,同時我們需要導入 System.IO名稱空間來處理流對象

把以上三點應用到ASPx頁面。同時我們需要對SqlServer做以下的准備。

# 需要至少含有一個圖片類型的字段的表

# 如果我們還有另外一個變字符類型的字段來存儲圖片類型,那樣會更好一些。

現在,我們准備了一個Sql表(包含了一個image數據類型的字段),還有標記。當然我們還得准備Submit按鈕,以便用戶在選擇了圖片以後提交。在這個按鈕的Onclick事件裡,我們需要讀取選取圖片的內容,然後把它存入到表裡。那我們先來看看這個Onclick事件。

提交按鈕的Onclick事件的代碼:

Dim intImageSize As Int64 Dim strImageType As String Dim ImageStream As Stream ’ Gets the Size of the Image intImageSize = PersonImage.PostedFile.ContentLength ’ Gets the Image Type strImageType = PersonImage.PostedFile.ContentType ’ Reads the Image ImageStream = PersonImage.PostedFile.InputStream Dim ImageContent(intImageSize) As Byte Dim intStatus As Integer intStatus = ImageStream.Read(ImageContent, 0, intImageSize) ’ Create Instance of Connection and Command Object Dim myConnection As New SqlConnection(ConfigurationSettings.APPSettings("ConnectionString")) Dim myCommand As New SqlCommand("sp_person_isp", myConnection) ’ Mark the Command as a SPROC myCommand.CommandType = CommandType.StoredProcedure ’ Add Parameters to SPROC Dim prmPersonImage As New SqlParameter("@PersonImage", SqlDbType.Image) prmPersonImage.Value = ImageContent myCommand.Parameters.Add(prmPersonImage) Dim prmPersonImageType As New SqlParameter("@PersonImageType", SqlDbType.VarChar, 255) prmPersonImageType.Value = strImageType myCommand.Parameters.Add(prmPersonImageType) Try myConnection.Open() myCommand.ExecuteNonQuery() myConnection.Close() Response.Write("New person successfully added!") Catch SQLexc As SqlException Response.Write("Insert Failed. Error Details are: " & SQLexc.ToString()) End Try 這是怎麼實現ASP.Net數據庫圖片存儲的呢?

PersonImage是HtmlInputFile控件的對象。首先需要獲得圖片的大小,可以使用下面的代碼實現:

intImageSize = PersonImage.PostedFile.ContentLength

然後返回圖片的類型使用ContenType屬性。最後,也是最重要的事就是取得Image Stream,這可以用以下代碼實現:

ImageStream = PersonImage.PostedFile.InputStream

我們需要一個字節型數組來存儲image 內容。讀取整個圖片可以使用Stream對象的Read方法來實現。Read(in byte[] buffer,int offset,int count)方法有三個參數。他們是:

buffer

字節數組。此方法返回時,該緩沖區包含指定的字符數組,該數組的 offset 和 (offset + count) 之間的值由從當前源中讀取的字節替換。

offset

buffer 中的從零開始的字節偏移量,從此處開始存儲從當前流中讀取的數據。

count

要從當前流中最多讀取的字節數。

這個Read方法用以下代碼實現:
intStatus = ImageStream.Read(ImageContent, 0, intImageSize)
.

現在,我們已經讀取了整個圖片的內容,下一步,我們要把這些內容存入到sql 表。我們將使用存儲過程來完成插入圖片類型和圖片內容到sql 表。如果你浏覽了上面的代碼,你將會發現我們使用了sqldbtype.image的數據類型(datatype)。Ok了,完成了這些,我們也就成功的把圖片存入到SqlServer中了。

下面是我們編寫的ASPx頁面。

ASP.Net數據庫圖片存儲:圖片存入數據庫結論

我們已經討論了如何把圖片存入到SQL Server,那麼我們如何從SqlServer中讀取圖片呢?可以參看我的另一篇文章:在ASP.Net中從SqlServer中檢索圖片。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved