ASP + ACCESS 上傳圖片到數(shù)據(jù)庫(kù)與將圖片讀出數(shù)據(jù)庫(kù)顯示之實(shí)現(xiàn)(詳細(xì)版)
ASP上傳圖片至數(shù)據(jù)庫(kù)內(nèi)功能的實(shí)現(xiàn)
一般的無組件上傳類,其上傳過程是將圖片先保存到指定文件夾,與此同時(shí)將該路徑保存至數(shù)據(jù)庫(kù)字段的。顯示圖片則是根據(jù)數(shù)據(jù)庫(kù)表中的路徑字段對(duì)應(yīng)顯示的。當(dāng)然有關(guān)圖片的管理,比如刪除:只刪除了路徑,實(shí)際的圖片需要根據(jù)該路徑通過FSO進(jìn)行刪除……那有沒有這樣一種情況:將圖片直接作為一個(gè)字段的值保存。對(duì)圖片的操作就象是對(duì)數(shù)據(jù)字段的操作一樣熟練。答案是肯定的,只是將該字段的類型設(shè)為OLE對(duì)象
知識(shí)點(diǎn):OLE 對(duì)象字段用來存儲(chǔ)諸如 Microsoft Word 或 Microsoft EXCEL 文檔、圖片、聲音的數(shù)據(jù)以及在別的程序中創(chuàng)建的其他類型的二進(jìn)制數(shù)據(jù)。OLE 對(duì)象可以鏈接或嵌入到 Microsoft Access 表的字段中。
一、設(shè)計(jì)數(shù)據(jù)庫(kù)testimg.mdb
為方便調(diào)試,設(shè)計(jì)表imgurl,其中兩個(gè)字段:id(自動(dòng)編號(hào)、關(guān)鍵字)、img(OLE 對(duì)象)
二、連接數(shù)據(jù)庫(kù)文件conn.asp
<%db_path="testimg.mdb"set conn=server.CreateObject("ADODB.connection")connstr="driver={Microsoft Access Driver (*.mdb)};dbq="&server.MapPath(db_path)conn.open connstr%>
三、提供上傳圖片的表單頁(yè)面upload.html
<form action="upload.asp" method="post" enctype="multipart/form-data"> <input type="file" name="imgurl"> <input type="submit" name=ok value="ok"></form>
四、接受數(shù)據(jù)并添加記錄頁(yè)upload.asp
<!--#include file="conn.asp"--><%formsize=request.totalbytesformdata=request.binaryread(formsize)bncrlf=chrB(13)&chrB(10)divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)datastart=instrb(formdata,bncrlf&bncrlf)+4dataend=instrb(datastart+1,formdata,divider)-datastartmydata=midb(formdata,datastart,dataend)set rs=server.createobject("ADODB.recordset")rs.open "SELECT * FROM imgurl",conn,3,3rs.addnewrs("img").AppendChunk myDatars.updaters.closeset rs=nothingset conn=nothingresponse.redirect "index.asp"%>
五、提取數(shù)據(jù)庫(kù)表中圖片字段內(nèi)容以做顯示圖片頁(yè)showimg.asp
<!--#include file="conn.asp"--><%set rs=server.createobject("ADODB.recordset")sql="select * from imgurl where id="&trim(request("id"))rs.open sql,conn,1,1Response.ContentType="image/*"Response.BinaryWrite rs("img").getChunk(8000000)rs.closeset rs=nothingset conn=nothing%>
六、顯示圖片的index.asp
<!--#include file="conn.asp"--><%strsql="select * from imgurl"set rs=server.createobject("ADODB.recordset")rs.open strsql,conn,1,1do until rs.eofwhatid=rs("id")%><img src="showimg.asp?id=<%=whatid%>">
<%rs.movenextloop
%>