六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

在ASP.NET中把圖片保存到SQL SERVER數據庫

[摘要]介紹 在很多情況下,我們需要把圖片保存到數據庫中。在某些應用程序中,存在一些敏感信息不能被存儲到文件系統中,因為存儲在文件系統上的任何圖片都很容易被用戶非法獲得。 本文將討論在ASP.NET中怎樣把圖片保存到SQL SERVER數據庫中。 在本文中我們將了解到以下幾方面的內容: l????????...

介紹
在很多情況下,我們需要把圖片保存到數據庫中。在某些應用程序中,存在一些敏感信息不能被存儲到文件系統中,因為存儲在文件系統上的任何圖片都很容易被用戶非法獲得。

本文將討論在ASP.NET中怎樣把圖片保存到SQL SERVER數據庫中。

在本文中我們將了解到以下幾方面的內容:

l???????? 上載圖片文件的要求

l???????? 使用Strem對象

l???????? 獲得上載圖片大小和類型

l???????? 如何使用InputStream方法?

上載圖片文件的要求

在開始上載前我們需要作兩件重要的事情

#Form標記的enctype屬性需要被設置為如下形式:

enctype="multipart/form-data"

#提供一個讓用戶選擇圖片文件的Html控件:



#還要引用System.IO命名空間來處理Strem對象

上述的三項都要應用到aspx頁中。在SQL SERVER中還有以下的一些要求:

#一個至少有一個字段類型為Image的表

#另外有一個用來存儲圖片類型的Varchar類型的字段就更好了

那么,我們有了一個有Image字段類型的數據表和一個(HTML文件控件)。我們還需要一個提交按鈕,當用戶選擇好圖片后可以點擊它。在按鈕的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

?

它是如何工作的?

對象PersonImage 是HTMLInputFile 控件。首先我們要獲得被插入圖片的大小,通過如下方法實現:

intImageSize = PersonImage.PostedFile.ContentLength

接著要通過ContenType屬性獲得圖片類型。最后最重要的是要獲得圖片文件流,通過如下方法實現:

ImageStream = PersonImage.PostedFile.InputStream

我們有一個byte數組ImageContent,準備用來保存圖片內容。整個圖片通過Stream對象的Read方法讀取,這個方法有三個參數,即:

#被復制的圖片內容的目標位置

#讀的開始位置

#需要被讀的子節數

讀聲明如下:

intStatus = ImageStream.Read(ImageContent, 0, intImageSize)

現在,我們讀取了整個圖片內容。接著我們需要把圖片內容插入SQL數據表中,我們將用用一個存儲過程把圖片類型和圖片插入SQL數據表。如果你看過上面的代碼清單,你就知道我們把數據類型設置為SqlDbType.Image.就這樣,我們成功地把圖片保存到了SQL SERVER數據庫。

例子的輸出樣例



圖:將圖片保存到sql server 數據庫

測試下面的代碼

代碼下載

點擊這里下載ASPX頁

點擊這里下載存儲過程

總結

這樣,我們完成了怎樣把圖片保存到數據庫的討論。我們也準備好了使用上面的下載部分提供的例子和存儲過程。如果你想知道怎樣從SQL SERVER中讀取圖片,請參閱我的這篇文章Retrieving Images from SqlServer in ASP .NET

譯者注:由于受到HTTP傳輸協議的限制,在不同的環境下能夠上載文件的大小不一。對于要上傳大文件的WEB應用程序來說,這并不是一個完美的解決方案,只是為我們提供了一種相對較好的方法。我曾經用這種方法在局域網中成功上載30M的文件,但是在系統性能較低的另外一個本機系統中,最多只能上載5M的數據。另外需要讀者注意的是,上載大文件的時候要適當修改machine.config和web.config文件,只要你打開這些文件就可以知道怎樣適當的修改。初次翻譯,還望大家多多指正。





主站蜘蛛池模板: 中文字幕亚洲一区婷婷 | 亚洲综合亚洲综合网成人 | 亚洲国产日韩在线观频 | 伊人久久大线蕉香港三级 | 四虎在线观看 | 亚洲aⅴ天堂 | 色老头网站久久网 | 亚洲国产艾杏在线观看 | 亚洲欧美日韩国产色另类 | 五月天婷婷精品免费视频 | 一级做a爰片久久毛片美女 一级做a爰片久久毛片毛片 | 亚洲一欧洲中文字幕在线 | 婷婷色九月综合激情丁香 | 亚洲免费高清视频 | 在线视频 二区 | 狍和美女一级aa毛片 | 日本最新免费二区三区 | 天天摸日日添狠狠添婷婷 | 日韩中文视频 | 最新高清无码专区 | 亚洲91在线 | 伊人天天干 | 人人狠狠| 中文字幕日韩专区精品系列 | 青青草国产精品人人爱99 | 日韩中文字幕精品久久 | 亚洲男人的天堂网 | 日韩午夜免费 | 日韩 亚洲 中文 图片 小说 | 最新欧美伦禁片在线观看 | 伊人久久中文字幕久久cm | 亚洲成在人线影视天堂网 | 天天综合天天看夜夜添狠狠玩 | 四虎精品影院永久在线播放 | 日韩高清在线观看 | 日韩福利视频精品专区 | 亚洲人成激情在线播放 | 一级女性全黄久久生活片 | 天天综合射 | 五月婷丁香| 天天躁夜夜躁狠狠躁 |