在ASP.net中保存/取出圖片入/從SQL數(shù)據(jù)庫(kù)
一、把圖片存入數(shù)據(jù)庫(kù)中
用到以下幾個(gè)方面的知識(shí):
1. 使用流對(duì)象
2. 查找準(zhǔn)備上傳的圖片的大小和類型
3.怎么使用InputStream方法
插入圖片的必要條件
1.#Form 標(biāo)記的 enctype 屬性應(yīng)該設(shè)置成 enctype="multipart/form-data"
2.# 需要一個(gè)<input type=file>表單來(lái)使用戶選擇他們要上傳的文件,同時(shí)我們需要導(dǎo)入 System.IO名稱空間來(lái)處理流對(duì)象
對(duì)SqlServer做以下的準(zhǔn)備
1.# 需要至少含有一個(gè)圖片類型的字段的表
2.# 如果我們還有另外一個(gè)變字符類型的字段來(lái)存儲(chǔ)圖片類型,那樣會(huì)更好一些。
窗體控件
1.插入圖片用到的是System.Web.UI.HtmlControls.HtmlInputFile控件,我們?cè)趙ebform中放入這個(gè)控件,取名為“imgInput”
2.同時(shí)再放入一個(gè)確認(rèn)上傳按鈕“Button1”
程序代碼
AddImg,用于返回要上傳的圖片內(nèi)容
1Private Function AddImg()Function AddImg(ByVal InputImg As System.Web.UI.HtmlControls.HtmlInputFile, ByVal ImgType As String, ByVal MaxSize As Int64) As Byte()
2'傳入一個(gè)htmlinputfile控件,一個(gè)上傳圖片格式和一個(gè)上傳圖片最大值,返回圖片的內(nèi)容,既要寫入數(shù)據(jù)庫(kù)中的內(nèi)容,你也可以同時(shí)寫入圖片類型
3 Dim intImageSize As Int64
4 Dim strImageType As String
5 Dim ImageStream As Stream
6 ' Gets the Image Type
7 strImageType=InputImg.PostedFile.ContentType
8 If strImageType <> ImgType Then
9 Response.Write("<script>alert('圖片類型為""')</script>") 'jgp類型為"image/pjpeg"
10 Exit Function
11 End If
12 ' Gets the Size of the Image
13 intImageSize = InputImg.PostedFile.ContentLength
14 If intImageSize > MaxSize Then
15 Response.Write("<script>alert('圖片不得大于K')</script>")
16 Exit Function
17 End If
18 ' Reads the Image
19 ImageStream = InputImg.PostedFile.InputStream
20 Dim ImageContent(intImageSize) As Byte
21 Dim intStatus As Integer
22 intStatus = ImageStream.Read(ImageContent, 0, intImageSize)
23 Return ImageContent
24 End Function
示例調(diào)用
Dim imageContent() As Byte
imageContent = AddImg(fileImg, "image/pjpeg", 512000)'上傳圖片類型為jpg,最大不超過(guò)500K
插入數(shù)據(jù)庫(kù)
我想這部分就不用寫了吧,你可以用任何方式(推薦使用存儲(chǔ)過(guò)程),將imageContent插入到數(shù)據(jù)庫(kù)中類型為image的字段就行了。
二、把圖片從數(shù)據(jù)庫(kù)中讀出
這部分比較簡(jiǎn)單:
假設(shè)img變量是你從數(shù)據(jù)庫(kù)中取出的圖片內(nèi)容
那么直接使用
Response.BinaryWrite(img)
就可以將圖片輸出到頁(yè)面上了
三:總結(jié)
將圖片存放在數(shù)據(jù)庫(kù)中其實(shí)是起到了圖片保護(hù)的作用,這樣就算別人瀏覽你的機(jī)器也看不到你的圖片,也可以用來(lái)保護(hù)重要的圖片資料。
- asp.net中上傳圖片文件實(shí)現(xiàn)防偽圖片水印并寫入數(shù)據(jù)庫(kù)
- ASP.NET下上傳圖片到數(shù)據(jù)庫(kù),并且讀出圖片的代碼(詳細(xì)版)
- asp.net上傳圖片保存到數(shù)據(jù)庫(kù)的代碼
- asp.net mvc 從數(shù)據(jù)庫(kù)中讀取圖片的實(shí)現(xiàn)代碼
- asp.net 將圖片上傳到mysql數(shù)據(jù)庫(kù)的方法
- ASP.Net 圖片存入數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼
- Asp.net把圖片存入數(shù)據(jù)庫(kù)和讀取圖片的方法
相關(guān)文章
asp.net 數(shù)據(jù)綁定的實(shí)例代碼
這篇文章介紹了asp.net 數(shù)據(jù)綁定的實(shí)例代碼,有需要的朋友可以參考一下2013-07-07
解析.netcore項(xiàng)目中IStartupFilter使用教程
netcore項(xiàng)目中有些服務(wù)是在通過(guò)中間件來(lái)通信的,比如orleans組件,今天通過(guò)實(shí)例代碼給大家介紹下netcore項(xiàng)目中IStartupFilter使用教程,感興趣的朋友一起看看吧2021-11-11
dataGrid 多維表頭、表頭跨行跨列設(shè)計(jì)及綁定數(shù)據(jù)
dataGrid 其實(shí)就是一個(gè)html table,本文將介紹dataGrid 多維表頭,表頭跨行跨列設(shè)計(jì)方法需要了解的朋友可以參考下2012-12-12
獲取ashx得到的內(nèi)容(已處理好的數(shù)據(jù))
獲取ashx得到的內(nèi)容,一般用于ajax的情況比較多一點(diǎn);重點(diǎn):ashx頁(yè)面?zhèn)鬟^(guò)來(lái)的就是已經(jīng)處理好的數(shù)據(jù),感興趣的朋有可以參考下啊,希望本文對(duì)你學(xué)習(xí)ajax有所幫助2013-01-01
WPF中button按鈕同時(shí)點(diǎn)擊多次觸發(fā)click解決方法
這篇文章主要為大家詳細(xì)介紹了WPF中button按鈕同時(shí)點(diǎn)擊多次觸發(fā)click的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
Asp.net MVC中Razor常見(jiàn)的問(wèn)題與解決方法總結(jié)
這篇文章主要給大家介紹了關(guān)于Asp.net MVC中Razor常見(jiàn)的問(wèn)題與解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08
asp.net如何將DataSet轉(zhuǎn)換成josn并輸出
將DataSet轉(zhuǎn)換成josn并輸出,如果解析有問(wèn)題可以把代碼中的"用"替換,需要的朋友可以參考下2014-08-08

