日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

如何在ASP.Net 中把图片存入数据库

發(fā)布時間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在ASP.Net 中把图片存入数据库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
介紹

???可能有很多的時候,我們急需把圖片存入到數(shù)據(jù)庫當中。在一些應用程序中,我們可能有一些敏感的資料,由于存儲在文件系統(tǒng)(file system)中的東西,將很容易被某些用戶盜取,所以這些數(shù)據(jù)不能存放在文件系統(tǒng)中。

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

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

1.?????插入圖片的必要條件

2.?????使用流對象

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

4.怎么使用InputStream方法?



插入圖片的必要條件

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

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

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

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

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

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

現(xiàn)在,我們準備了一個Sql表(包含了一個image數(shù)據(jù)類型的字段),還有<input type=file>標記。當然我們還得準備Submit按鈕,以便用戶在選擇了圖片以后提交。在這個按鈕的Onclick事件里,我們需要讀取選取圖片的內(nèi)容,然后把它存入到表里。那我們先來看看這個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



這是怎么工作的呢?
PersonImage是HTMLInputFile控件的對象。首先需要獲得圖片的大小,可以使用下面的代碼實現(xiàn):

intImageSize = PersonImage.PostedFile.ContentLength

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

ImageStream = PersonImage.PostedFile.InputStream

我們需要一個字節(jié)型數(shù)組來存儲image 內(nèi)容。讀取整個圖片可以使用Stream對象的Read方法來實現(xiàn)。Read(in byte[] buffer,int offset,int count)方法有三個參數(shù)。【關于Read方法的詳細可以參看.Net FrameWorkSDK】他們是:

buffer

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

offset

buffer 中的從零開始的字節(jié)偏移量,從此處開始存儲從當前流中讀取的數(shù)據(jù)。

count

要從當前流中最多讀取的字節(jié)數(shù)。

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

現(xiàn)在,我們已經(jīng)讀取了整個圖片的內(nèi)容,下一步,我們要把這些內(nèi)容存入到sql 表。我們將使用存儲過程來完成插入圖片類型和圖片內(nèi)容到sql 表。如果你瀏覽了上面的代碼,你將會發(fā)現(xiàn)我們使用了sqldbtype.image的數(shù)據(jù)類型(datatype)。Ok了,完成了這些,我們也就成功的把圖片存入到SqlServer中了。下面是我們編寫的aspx頁面。

結論

我們已經(jīng)討論了如何把圖片存入到Sql Server,那么我們?nèi)绾螐腟qlServer中讀取圖片呢?可以參看我的另一篇文章:在Asp.Net中從SqlServer中檢索圖片。

總結

以上是生活随笔為你收集整理的如何在ASP.Net 中把图片存入数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。