ASP上傳圖片功能的又一實現(OLE對象)

來源:互聯網
上載者:User

上次說到的上傳圖片是採用稻香老農開發的無組件上傳。其上傳過程是將圖片先儲存到指定檔案夾,與此同時將該路徑儲存至資料庫欄位的。顯示圖片則是根據資料庫表中的路徑欄位對應顯示的。當然有關圖片的管理,比如刪除:只刪除了路徑,實際的圖片需要根據該路徑通過FSO進行刪除……

那有沒有這樣一種情況:將圖片直接作為一個欄位的值儲存。對圖片的操作就象是對資料欄位的操作一樣熟練。答案是肯定的,只是將該欄位的類型設為OLE對象

知識點:OLE 對象欄位用來儲存諸如 Microsoft Word 或 Microsoft EXCEL 文檔、圖片、聲音的資料以及在別的程式中建立的其他類型的位元據。OLE 對象可以連結或嵌入到 Microsoft Access 表的欄位中。

一、設計資料庫testimg.mdb

為方便調試,設計表imgurl,其中兩個欄位:id(自動編號、關鍵字)、img(OLE 對象)

二、串連資料庫檔案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
%>

三、提供上傳圖片的表單頁面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>

四、接受資料並添加記錄頁upload.asp

<!--#include file="conn.asp"-->
<%
formsize=request.totalbytes
formdata=request.binaryread(formsize)
bncrlf=chrB(13)&chrB(10)
divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)
datastart=instrb(formdata,bncrlf&bncrlf)+4
dataend=instrb(datastart+1,formdata,divider)-datastart
mydata=midb(formdata,datastart,dataend)
set rs=server.createobject("ADODB.recordset")
rs.open "SELECT * FROM imgurl",conn,3,3
rs.addnew
rs("img").AppendChunk myData
rs.update
rs.close
set rs=nothing
set conn=nothing
response.redirect "index.asp"
%>

五、提取資料庫表中圖片欄位內容以做顯示圖片頁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,1
Response.ContentType="image/*"
Response.BinaryWrite rs("img").getChunk(8000000)
rs.close
set rs=nothing
set conn=nothing
%>

六、顯示圖片的index.asp

<!--#include file="conn.asp"-->
<%
strsql="select * from imgurl"
set rs=server.createobject("ADODB.recordset")
rs.open strsql,conn,1,1
do until rs.eof
whatid=rs("id")
%>
<img src="showimg.asp?id=<%=whatid%>">

<%
rs.movenext
loop%>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.