溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ASP.NET數(shù)據(jù)庫圖片如何存儲(chǔ)到Sql2000中

發(fā)布時(shí)間:2021-11-22 14:11:23 來源:億速云 閱讀:159 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)ASP.NET數(shù)據(jù)庫圖片如何存儲(chǔ)到Sql2000中的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

ASP.NET數(shù)據(jù)庫圖片存儲(chǔ):插入圖片的必要條件

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

#Form 標(biāo)記的 enctype 屬性應(yīng)該設(shè)置成 enctype="multipart/form-data"

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

把以上三點(diǎn)應(yīng)用到aspx頁面。同時(shí)我們需要對(duì)SqlServer做以下的準(zhǔn)備。

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

# 如果我們還有另外一個(gè)變字符類型的字段來存儲(chǔ)圖片類型,那樣會(huì)更好一些。

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

這是怎么實(shí)現(xiàn)ASP.NET數(shù)據(jù)庫圖片存儲(chǔ)的呢?

PersonImage是HTMLInputFile控件的對(duì)象。首先需要獲得圖片的大小,可以使用下面的代碼實(shí)現(xiàn):

intImageSize = PersonImage.PostedFile.ContentLength

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

ImageStream = PersonImage.PostedFile.InputStream

我們需要一個(gè)字節(jié)型數(shù)組來存儲(chǔ)image 內(nèi)容。讀取整個(gè)圖片可以使用Stream對(duì)象的Read方法來實(shí)現(xiàn)。Read(in byte[] buffer,int offset,int count)方法有三個(gè)參數(shù)。他們是:

buffer

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

offset

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

count

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

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

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

感謝各位的閱讀!關(guān)于“ASP.NET數(shù)據(jù)庫圖片如何存儲(chǔ)到Sql2000中”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI