ASP + ACCESS 上传图片到数据库与将图片读出数据库显示之实现(详细版)
2014-05-07 14:10
706 查看
ASP上传图片至数据库内功能的实现
一般的无组件上传类,其上传过程是将图片先保存到指定文件夹,与此同时将该路径保存至数据库字段的。显示图片则是根据数据库表中的路径字段对应显示的。当然有关图片的管理,比如删除:只删除了路径,实际的图片需要根据该路径通过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
%>
一般的无组件上传类,其上传过程是将图片先保存到指定文件夹,与此同时将该路径保存至数据库字段的。显示图片则是根据数据库表中的路径字段对应显示的。当然有关图片的管理,比如删除:只删除了路径,实际的图片需要根据该路径通过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
%>
相关文章推荐
- ASP + ACCESS 上传图片到数据库与将图片读出数据库显示之实现
- 用asp.net 下载文件
- ASP + ACCESS保存图片文件之实现
- [Asp.Net]Understanding Built-In User and Group Accounts in IIS
- [Asp.Net]Understanding Built-In User and Group Accounts in IIS
- ASP.NET MVC 4 - 上传图片到数据库
- ASP.NET:安装SQL SERVER安全数据库AspNetDb
- ASP.NET、C#调用外部可执行exe文件--多种方案
- Aspose.Cells. Demo代码示例库(免费下载)
- Asp.Net构架
- 深入分析ASP.NET Mvc 1.0 – 1. 深入MvcHandler
- 基于ASP.NET WPF技术及MVP模式实战太平人寿客户管理项目开发(Repository模式)
- ASP.NET中上传并读取Excel文件数据示例
- 由textbox里的换行转换为导出excel里的单元格内的强制换行
- asp.net mvc 默认首页设置静态文件
- [ASP.NET 控件实作 Day10] Media Player 控件
- 在 ASP.NET 网页中不经过回发而以编程方式实现客户端回调
- IIS 7 Web服务器上部署ASP.NET网站(转)
- ASP.NET 使用StateServer 模式
- 如何调试aspx程序