亚洲AV无码乱码在线观看不卡|最新大伊香蕉精品视频在线|亚洲不卡av一区二区|国产美女无遮挡免费

登錄論壇 | 注冊(cè)會(huì)員 設(shè)為首頁 | 收藏本站
當(dāng)前位置 : 首頁>軟件學(xué)院>程序開發(fā)>ASP.NET>正文
 
如何在.Net 中把圖片存入數(shù)據(jù)庫一

http://www.yibo1263.com 2008-5-29 7:57:37  來源:BBS  編輯:張佳奇
 
  可能有很多的時(shí)候,我們急需把圖片存入到數(shù)據(jù)庫當(dāng)中。在一些應(yīng)用程序中,我們可能有一些敏感的資料,由于存儲(chǔ)在文件系統(tǒng)(file system)中的東西,將很容易被某些用戶盜取,所以這些數(shù)據(jù)不能存放在文件系統(tǒng)中。

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

在這篇文章中我們可以學(xué)到以下幾個(gè)方面的知識(shí):

1. 插入圖片的必要條件

2. 使用流對(duì)象

3. 查找準(zhǔn)備上傳的圖片的大小和類型

4.怎么使用InputStream方法?



插入圖片的必要條件

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

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

# 需要一個(gè)表單來使用戶選擇他們要上傳的文件,同時(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ù)類型的字段),還有標(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



這是怎么工作的呢?
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ù)!娟P(guān)于Read方法的詳細(xì)可以參看.Net FrameWorkSDK】他們是:

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)

本新聞共2頁,當(dāng)前在第1頁  1  2  

 
收藏】【打印】【進(jìn)入論壇
  相關(guān)文章:

·實(shí)例講解 ASP.NET 2.0中的URL映射

 
 
 
 
最新文章

中關(guān)村艷照門女主角詳記錄高清組圖 
大連護(hù)士門大尺度艷照高清組圖
iPhone女孩微博爆紅 最寶貴東西換iPhon
反恐精英之父內(nèi)維爾:改變電腦游戲銷售
團(tuán)購網(wǎng)站黎明之前:中國市場(chǎng)慘烈廝殺不
團(tuán)購鼻祖Groupon中國揭秘:快與慢的商業(yè)
Spil Games發(fā)布新的品牌形象
1800配置一臺(tái)主機(jī) 不要顯示器
聯(lián)想V360筆記本模特寫真
愛國者第四代移動(dòng)硬盤將面市、低電壓保

 
推薦文章
1
2
3
4
5
6
7
8
9
10
iPhone女孩微博爆紅 最寶貴東西換
大連護(hù)士門大尺度艷照高清組圖
中關(guān)村艷照門女主角詳記錄高清組
蘋果員工中毒門
宮如敏不雅照瘋傳 看張馨予韓一菲
深耕市場(chǎng) 永續(xù)經(jīng)營——專訪百腦匯
優(yōu)派專業(yè)電子書 讓您回家旅途多姿
揭曉百萬大獎(jiǎng)三星bada魅力綻放中
大明龍權(quán)“江湖英雄會(huì)”全國PK大
永恒之塔校園達(dá)人挑戰(zhàn)賽完美落幕
八卦圖解 More>>
iPhone女孩微博爆紅 最寶貴東西換 大連護(hù)士門大尺度艷照高清組圖
中關(guān)村艷照門女主角詳記錄高清組 宮如敏不雅照瘋傳 看張馨予韓一菲