如何利用數(shù)據(jù)庫(kù)儲(chǔ)存圖檔
作者:佚名 來(lái)源:不詳 發(fā)布時(shí)間:2008-3-19 8:21:48
在 SQL Server 當(dāng)中有一款資料類(lèi)型號(hào)作 Image , 除了可以儲(chǔ)存圖檔外它還可以儲(chǔ)存大型的二進(jìn)位資料檔, 對(duì)這一個(gè)欄位大部分的人是聽(tīng)過(guò)但是不知影按怎來(lái)用, 今日的文章就要來(lái)討論如何將圖檔存入去資料庫(kù)
準(zhǔn)備工作 為了降低這篇文章的篇幅及複雜度, 咱決定借用 Upload 元件來(lái)替我們完成檔案上傳的工作, 所要使用的是 Dundas 所提供免錢(qián)的上傳元件, 請(qǐng)到下底的網(wǎng)址下載 Dundas Upload 元件並安裝 http://www./ 創(chuàng)造資料表 在這個(gè)例咱要用到 SQL 內(nèi)建的 Pubs 資料庫(kù)來(lái)作測(cè)試, 請(qǐng)打開(kāi) QA 然後執(zhí)行下底的創(chuàng)造資料表指令, 所要建立的資料表中一個(gè)欄位是紀(jì)錄檔案的 Content-Type, 另一個(gè)則是儲(chǔ)存圖檔 Use Pubs Create Table ImgData ( ImgID Int Identity Not Null Primary Key, ContentType VarChar(20), FileData Image ) HTML 表單部分 現(xiàn)在來(lái)看看 HTML 表單的部分, 因?yàn)槭怯米鰴n案上傳因此用 enctype="multipart/form-data" , 不過(guò)要注意的是一但使用了 form-data 後表單資料的取得也就不能再用 Request.Form, 因?yàn)檫@不是這篇文章的重點(diǎn)所以在這就不多做解釋, 請(qǐng)將下底的碼存成 insert.htm <html> <head> <title>資料庫(kù)存入圖檔</title> </head> <body> <form method="POST" enctype="multipart/form-data" action="Insert.asp"> <table border="0" align="center"> <tr> <td>File :</td> <td><input type="file" name="file" size="40"></td> </tr> <tr> <td></td> <td><input type="submit" value=" 進(jìn)行上傳 "></td> </tr> </table> </form> </body> </html> 程式碼 擱來(lái)看麥 ASP 的部分, 請(qǐng)將下底的碼存成 insert.asp <% Response.Buffer = True ConnStr = "Provider=SQLOLEDB;" _ & "Data Source=你的電腦名稱(chēng);" _ & "Initial Catalog=Pubs;" _ & "User Id=sa;" _ & "Password=你的密碼" '建立 oUpload 上傳物件 Set oUpload = Server.CreateObject("Dundas.Upload.2") '在使用 oUpload 集合 (Collection) 前, 要先呼叫 Save 或 SaveToMemory 方法 oUpload.SaveToMemory Set oRs = Server.CreateObject("Adodb.Recordset") oRs.Open "ImgData", ConnStr, 2, 3 oRs.AddNew '呼叫 oUpload 物件的 ContentType, Binary 屬性, 已取得我們要的資料 oRs("ContentType").Value = oUpload.Files(0).ContentType oRs("FileData").Value = oUpload.Files(0).Binary oRs.Update oRs.Close Set oRs = Nothing %> 頂高的程式假設(shè)你只上傳一個(gè)檔案, 所以使用 oUpload.Files(0), 如果你一次上傳一個(gè)以上的檔案, 你可以將程式小改為 ... oRs.Open ... For Each oFile In oUpload.Files If InStr(1,oFile.ContentType,"image") <> 0 Then oRs.AddNew oRs("ContentType").Value = oFile.ContentType oRs("imgdata").Value = oFile.Binary End If Next oRs.Update ... 現(xiàn)在你可以利用瀏覽器開(kāi)啟 Insert.htm 來(lái)進(jìn)行上傳圖檔到資料庫(kù)的動(dòng)作, 執(zhí)行完後你可以 Select ImgData 資料表, 應(yīng)該是出現(xiàn)一筆資料, 不過(guò) FileData 欄位應(yīng)該是看不懂的啦! 今日的文章就先介紹到這, 下一篇文章再來(lái)介紹如何將圖檔從資料庫(kù)中拉出來(lái)! 希望這篇文章對(duì)你有幫助! |
|
來(lái)自: Icyhu > 《數(shù)據(jù)庫(kù)基礎(chǔ)》