本日志标题:[ASP]上传图片功能的又一实现(OLE对象)        [2004-6-5]

上次说到的上传图片是采用稻香老农开发的无组件上传。其上传过程是将图片先保存到指定文件夹,与此同时将该路径保存至数据库字段的。显示图片则是根据数据库表中的路径字段对应显示的。当然有关图片的管理,比如删除:只删除了路径,实际的图片需要根据该路径通过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%>




[此贴子已经被作者于2004-6-5 9:45:25编辑过]




在百度搜索完整的[ASP]上传图片功能的又一实现(OLE对象)内容,或者用Google搜索相关的更多内容

By [cnbruce] at 22:44:08 | 评论 [92] | 浏览 [60583] | TrackBack| 返回顶部

About Comments
bruce:

做个友情连接如何?
老猫の理想
http://www.kinderpower.com/mfblog/

我的blog是上有个交换连接的图片

等待你的回应
By [迈克老猫] at 2004-6-6 15:27:21
thanks
我的也已经做好:
http://www.kinderpower.com/mfblog/bloglinks.asp
By [迈克老猫] at 2004-6-7 23:54:08
做个链接吧
KusTa's BloG | 小鸟工作室
http://BloG.8594.neT


http://www.8594.net/BLOG/bloglinks.asp
By [KusTa] at 2004-6-9 19:36:50
除了图片,其它文件,诸如视频文件也可上传?
呵呵,不错不错.得好好试试
By [潇遥书生] at 2004-6-15 12:09:56
By [tuwoo] at 2004-7-3 2:51:51
如果我上传图片时,给它加个标题怎么加?我用Request.Form 时出现Request.Form 后不能调用 BinaryRead
By [dwflydw] at 2004-7-7 10:08:09
不错,学会了
[Edit on 2004-7-9 10:58:52 By waizi]
By [waizi] at 2004-7-9 10:35:05
为什么每张图片都显示不了?
By [no1234] at 2004-8-3 2:29:23
能否实现一次上传两到三张图片,我还是没办法实现,还有能不能帮我在发一个关于文件上传的方法如:一个文件或多个文件上传。
谢谢狼兄!
By [ashzhu] at 2004-8-6 11:20:34
多次上传偶也没研究过,这几天看看。
By [cnbruce] at 2004-8-6 17:52:45
上传不了呀 出现错误嘎
错误类型:
Provider (0x80004005)
未指定的错误
/xue/conn.asp, 第 5 行

但是表单里面有图片
但是显示不了呀~~!!
By [茶茶籽] at 2004-8-17 10:43:53
请问如果提交的表格内需要有普通数据怎么办?这样的提交方式不能提交普通的数据啊!
By [taile] at 2004-9-12 12:13:01
http://www.donews.net/zykj2000/archive/2004/08/13/67259.aspx
my template class
By [papersnake] at 2004-11-2 15:53:15
如何让数据库中的图片按比例所放输出到浏览器中,谢谢,希望您早点回答我.
By [qssweet] at 2004-11-10 16:00:41
请问如果提交的表格内需要有普通数据怎么办?这样的提交方式不能提交普通的数据啊!
急,请帮小弟一把
By [nsong] at 2005-4-4 10:13:52
to nsong
我这里有
http://www.yd631.com/blog/blogview.asp?logID=205
By [oursky] at 2005-4-4 10:43:17
By [sadasd] at 2005-4-18 8:19:57
是有用,但删除时文件还是那么大小,不会因删除面变小!汗
By [www.yljz.com] at 2005-6-8 18:04:20
这个问题已经讨论了很久了。不过有别的办法可以代替这个。
普通的无组件上传文件到UPIMG/文件夹下,并在数据库里的这一行同时加上一个字段,
DELNAME
以后在删除这个字段的时候,先FSO删除UPIMG/下的该图片文件。
想法是这样,不知道实现起来容易不。
我的QQ:8581785
加时请注明 WEB技术讨论,谢谢。
By [雷雷] at 2005-8-29 12:20:41
最大能传多大的图片?如果是传文件我该怎么修改!?谢谢!
By [yyflewis] at 2005-9-23 22:26:50

这样是否更加安全?
By [asp] at 2005-9-27 13:19:22
非常感谢站长,对于正在学习中的我们帮助太大了。
By [庸人使] at 2006-1-4 14:17:03
有没有修改图片的阿,就是像修改新闻内容,谢谢
By [gegezhou] at 2006-2-9 21:24:45
好象显示不了,主人测试了吗?可以提供下载吗?
谢谢!!!!!!!!!!!!!!!!
tzfzjt@hotmail.com
By [tzfzjt] at 2006-3-1 16:16:12
不错,学习了!!谢谢!很方便呀!!
By [阿健] at 2006-3-8 20:52:59
楼上的能显示吗?
怎么我不能显示的
By [banket] at 2006-4-11 12:21:26
我用Request.Form 时出现Request.Form 后不能调用 BinaryRead,请问可能会是什么出错?
By [fg18] at 2006-4-23 10:36:46
注意:当使用了BinaryRead方法,Request对象将不能使用Form集合中的任何变,反之亦然
因为BinaryRead表示接受并返回表单Post方法发送到服务器端的二进制数据
[Edit on 2006-4-23 15:51:00 By cnbruce]
By [cnbruce] at 2006-4-23 15:49:31
实现多图片写入数据库,可以另建一数据表结构articleid images 前者保存文章id,后者是ole对象,保存图片,到时候根据id显示图片.
By [梦海无垠] at 2006-4-24 9:47:47
如何让数据库中的图片按比例所放输出到浏览器中,谢谢,希望您早点回答我.

使用以下代码就可以了:<img src="xx.jpg" alt="" width="190" height="146" border="0" onload='if(this.width>=190) {this.width=190;}'>
[Edit on 2006-4-24 9:52:17 By 梦海无垠]
By [梦海无垠] at 2006-4-24 9:51:31
五、提取数据库表中图片字段内容以做显示图片页showimg.asp 的补充
<%
Response.Expires = 0
Response.buffer=True
Response.clear

sql="select * from imgurl where id="&trim(request("id"))
AQ.open sql,conn,1,1
Response.ContentType="image/*"
Response.BinaryWrite AQ("img").getChunk(7500000)
%>
By [netnuclear] at 2006-6-6 16:05:59
By [小子] at 2006-7-18 15:55:10
不能显示图片,能否帮忙解决一下,谢谢,谢谢!
By [ershatage] at 2006-7-21 23:57:47
不能显示图片,能否帮忙?????
baolin_lu@163.com
By [baolin_lu] at 2006-10-14 15:41:38
读完此篇,心中甚喜,想必又学多了一项技术,但是,如我若想上传图片的同时,还想上传文字该又如何去做?请狼大哥尽快复回
By [winhero_charles] at 2007-1-12 16:59:39
如果我上传图片时,给它加个标题怎么加
By [123] at 2007-6-23 13:47:54
我的也无法显示,应该是传到数据库中了,但在显示的时候都是小红叉叉,我的邮箱是nmghero@126.com,哪位高人调试成功了,能否把源代码展示一下,先谢了
By [草原] at 2007-6-28 9:25:37
我的也是这样的 不知道为什么
By [63666] at 2007-7-8 11:34:02
显示不出来啊 错误在showimg.asp 所以显示出的只是小红叉
谁能解决下面的错误啊 showimg.asp里面的 !!

(12)sql="select * from imgurl where id="&trim(request("id")
(13)rs.open sql,conn,1,1
(14)Response.ContentType="image/*"
(15)Response.BinaryWrite rs("img".getChunk(8000000)


技术信息(用于支持人员)

错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
ODBC 驱动程序不支持所需的属性。
/tupiansc/showimg.asp, 第 13 行
By [mujunhua] at 2007-9-6 11:39:26
我终于实现了,而且可以分次上传多个图片,给图片加标题,这些功能全部没问题了,现在只是没有远程测试,听我老师说,这种方法在网络不好的条件下容易出错,如果大家想要,给我的qq留言,454658418
By [草原] at 2007-9-27 11:35:36
那如果在一个页面上先上传东西.然后再提交form表单?要怎样实现呢?
By [fjjj] at 2007-10-4 17:49:55
有没有高手帮我想一下办法;在我发布一条资讯时,要求我先上传多张图片.然后返回到原来页面显示已经上传成功的图片.之后就可以把已经上传成功的图片插入到资讯内容当中,最后才是提交form表单,才写数据库表;
这样子,要怎样才能实现呢??
帮帮忙吧!
By [fjjj] at 2007-10-4 17:56:38
要怎样才能实现呢
By [dd] at 2008-3-5 17:20:18
这也只是一种方式,很明显这种方法不可取...

你有想过吗?这样做你的数据库会变得很大很大..

而且ACCESS数据库,如果你不执行压缩功能.它的大小是不会变的.也就是说,你就算把记录删除了.文件还是那么大(不执行压缩的话)


也只能说这是一种方法.问题,只是实用不实用而已...
By [小秦] at 2008-4-3 12:56:27
上传多个图时,要如何做
By [123] at 2009-10-8 17:27:01
能有得下载就好了
By [12456] at 2010-3-9 17:15:06
大哥图片显示不了啊
By [] at 2011-6-11 14:03:44
怎么老是提示保存文件啊 1099101121求高手教我
By [网络虫子] at 2011-9-20 13:03:43


Post a Comment
呢称: 验证码: 
禁止笑脸转换 禁止UBB | 缩放输入框:6 5 | [Ctrl+Enter提交](1000个字符限制)