如何用网页显示从数据库中读出的图片?-高分求教!!!!

QQ342151559 2011-04-27 09:33:07
我想将一些图片保存到数据库中(Access).
图片添加:
Dim WIS_Stm As ADODB.Stream
Dim WIS_Rs As ADODB.Recordset
Dim str_DateID As String

'读取文件到内容
Set WIS_Stm = New ADODB.Stream
WIS_Stm.Type = adTypeBinary '二进制模式
WIS_Stm.Open
WIS_Stm.LoadFromFile App.Path & "\tem.jpg"

'打开文件表
Set WIS_Rs = New ADODB.Recordset

....

WIS_Rs.AddNew
WIS_Rs.Fields("DateID") = str_DateID
....
WIS_Rs.Fields("IPicture") = WIS_Stm.Read

WIS_Rs.Update
WIS_Rs.Close
WIS_Stm.Close


从网上搜索到一些帖子,该显示有2部分:第一个文件:Show.html;第二个文件 p.asp;(都放在同一文件内)

Show.html 代码:
<html>
<head></head>
<body>
显示库中ID为1的图片
<img src='p.asp?DateID=2011-04-27 20:21:18@'>
</body>
</html>



p.asp 代码:

<%
set conngraph=server.createobject("adodb.connection")
conngraph.connectionstring="provider=microsoft.jet.oledb.4.0;data source=" & server.mappath("images.mdb")
conngraph.open
set rec=server.createobject("adodb.recordset")
strsql="select IPicture from IssueChart where DateID=" & trim(request("DateID"))
rec.open strsql,conngraph,1,1
response.contenttype = "image/*"
response.binarywrite rec("IPicture").getchunk(rec("IPicture").ActualSize)
rec.close
set rec=nothing
set conngraph=nothing
%>


但点击 Show.html文件后直接显示一个带 ×的标志,没有图片。不知道什么地方出了问题,各位能否给点意见啊..


...全文
272 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanshi 2011-05-07
  • 打赏
  • 举报
回复
建议把图片上传到服务器,然后数据库存图片的路径(我一直是这么干的,哈哈)
QQ342151559 2011-05-07
  • 打赏
  • 举报
回复
无法实现用asp的模式,如果楼上的能看到图片,那就可能是我的环境不对的原因吧
目前只能采用先将图片保存到文件夹中,然后网页从文件夹中链接图片....
b_what_u_wanna_b_8 2011-05-01
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 piaorou 的回复:]
你的代码没什么太大错误,应该是你的SQL语句错了
这里传递参数是字符型的
p.asp?DateID=2011-04-27 20:21:18@
而你的 strsql="select IPicture from IssueChart where DateID=" & trim(request("DateID"))
却是整数行的。

你调试的时候。直接输入 http://地址/p.……
[/Quote]
21楼说的对。这句应该改成:strsql="select IPicture from IssueChart where DateID='" & trim(request("DateID"))&"'"
这句必须这么写的才能够执行
piaorou 2011-05-01
  • 打赏
  • 举报
回复
你的代码没什么太大错误,应该是你的SQL语句错了
这里传递参数是字符型的
p.asp?DateID=2011-04-27 20:21:18@
而你的 strsql="select IPicture from IssueChart where DateID=" & trim(request("DateID"))
却是整数行的。

你调试的时候。直接输入 http://地址/p.asp?DateID=2011-04-27 20:21:18@
就可以看见是哪行出错了。

gubai2017 2011-05-01
  • 打赏
  • 举报
回复
把图片名称放入数据库,再在网页中调用数据库,使其读入文件夹中的图片
QQ342151559 2011-04-30
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 toury 的回复:]
引用 14 楼 qq342151559 的回复:

数据库使用的名称没有错误:IssueC.mdb。
想问下楼上几位,是否你们自己能够从IssueC.mdb(http://u.115.com/file/t3a02c79cd)数据中读取图片显示在网页上呢?

没环境、没测试。

10楼代码你测试没?
[/Quote]

弱弱的问一句,具体需要什么样的环境?
toury 2011-04-30
  • 打赏
  • 举报
回复
18楼,是IIS环境,我只装了apache,没装IIS。

昨晚我叫人测试了一下,10楼代码运行良好。听小家伙说图片是一张VB的IDE设计界面对吧。就是图像稍大,加载的稍慢了些,呵呵。
heyusuo 2011-04-28
  • 打赏
  • 举报
回复
楼主,这种方案也太不合算了啊,你可以用无组件上传,把路径保存到数据库就可以了啊,显示的时候再
<img src=<%=rs("路径字段")%>>就可以了,这个问题我有过详细的解答,有源码,你自己去看看就能明白了,http://topic.csdn.net/u/20090401/21/65657de4-5cf3-49a9-becb-a3d120ebd71b.html
lzp4881 2011-04-28
  • 打赏
  • 举报
回复
主要是你的查询语句有问题
strsql="select IPicture from IssueChart where DateID=" & trim(request("DateID"))
对于字符型变量,前后应该加单引号
strsql="select IPicture from IssueChart where DateID='" & trim(request("DateID"))&"'"
而且查询完后一定要判断一下,是否找到记录再输出

rec.open strsql,conngraph,1,1
if not (rec.eof and rec.bof) then
response.contenttype = "image/*"
response.binarywrite rec("IPicture").getchunk(rec("IPicture").ActualSize)
else
response.write "没有找到记录"
end if
rec.close

要养成良好的习惯
lzp4881 2011-04-28
  • 打赏
  • 举报
回复
用你的代码测试过了,没有问题,可以显示出图片
只要把
trsql="select IPicture from IssueChart where DateID=" & trim(request("DateID"))
改成
strsql="select IPicture from IssueChart where DateID='" & trim(request("DateID"))&"'"
就可以了

其它都没动
toury 2011-04-28
  • 打赏
  • 举报
回复
忘记说了,测试的时候把数据库、xx.html和p.asp放到同级目录下
toury 2011-04-28
  • 打赏
  • 举报
回复
5楼代码有误,看这个:
xx.html

<html>
<head>
</head>
<body>
显示库中ID为1的图片
<script>
document.write("<img src=\"p.asp?DateID="+escape('2011-04-27 20:21:18@')+"\">")
</script>
</body>
</html>

p.asp:

<%
set conngraph=server.createobject("adodb.connection")
''''''''conngraph.connectionstring="provider=microsoft.jet.oledb.4.0;data source=" & server.mappath("images.mdb")
conngraph.connectionstring="provider=microsoft.jet.oledb.4.0;data source=" & server.mappath("IssueC.mdb")
conngraph.open
set rec=server.createobject("adodb.recordset")
strsql="select IPicture from IssueChart where DateID='"&trim(request("DateID"))&"'"
rec.open strsql,conngraph,1,3
response.contenttype = "image/*"
response.binarywrite rec("IPicture")
rec.close
set rec=nothing
conngraph.close
set conngraph=nothing
%>

注意事项:
1、仔细检查你的数据库名是否images.mdb?你上传的数据库名是IssueC.mdb!!
2、p.asp中不能有任何错误,否则图片无法显示。你最好把那段连库代码在别的文件上确认没问题了再移植到p.asp
lzp4881 2011-04-28
  • 打赏
  • 举报
回复
strsql="select IPicture from IssueChart where DateID=" & trim(request("DateID"))
改成
strsql="select IPicture from IssueChart where DateID='" & request.QueryString("DateID") & "'"

你把日期中的空格去掉了,就找不到记录了
toury 2011-04-28
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 qq342151559 的回复:]

数据库使用的名称没有错误:IssueC.mdb。
想问下楼上几位,是否你们自己能够从IssueC.mdb(http://u.115.com/file/t3a02c79cd)数据中读取图片显示在网页上呢?
[/Quote]
没环境、没测试。

10楼代码你测试没?
QQ342151559 2011-04-28
  • 打赏
  • 举报
回复
数据库使用的名称没有错误:IssueC.mdb。
想问下楼上几位,是否你们自己能够从IssueC.mdb(http://u.115.com/file/t3a02c79cd)数据中读取图片显示在网页上呢?
QQ342151559 2011-04-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hongmei85 的回复:]
你确定IssueChart 中存在DateID为2011-04-27 20:21:18@的数据吗?
[/Quote]

呵呵数据库已经提供,大家可以帮忙试试看...
hongmei85 2011-04-27
  • 打赏
  • 举报
回复
你确定IssueChart 中存在DateID为2011-04-27 20:21:18@的数据吗?
QQ342151559 2011-04-27
  • 打赏
  • 举报
回复
为何仍然无法显示呢?是否我的环境问题(asp是否需要安装什么,或者需要在一个什么样的平台才能运行)
下面是我的数据库:
http://a.qjwm.com/??65B
请帮忙看看,谢谢!
toury 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qq342151559 的回复:]

目前的形式是图片只能存放在数据库中。。
暂时不考虑"图片保存在文件夹中,数据库中存放图片链接"这种方式.
[/Quote]
看来你是一定要。。了,呵呵。好吧,就代码论代码:
1.
<html>
<head>
</head>
<body>
显示库中ID为1的图片
<script>
document.write("<img src=\"p.asp?DateID=escape('2011-04-27 20:21:18@'\">")
</script>

</body>
</html>

2.
<%
set conngraph=server.createobject("adodb.connection")
conngraph.connectionstring="provider=microsoft.jet.oledb.4.0;data source=" & server.mappath("images.mdb")
conngraph.open
set rec=server.createobject("adodb.recordset")
strsql="select IPicture from IssueChart where DateID='"&trim(request("DateID"))&"'"
rec.open strsql,conngraph,1,3
response.contenttype = "image/*"
response.binarywrite rec("IPicture")
rec.close
set rec=nothing
conngraph.close
set conngraph=nothing
%>
hookee 2011-04-27
  • 打赏
  • 举报
回复
单独访问 p.asp ,看有没有数据输出
如果有数据输出, access保存ole图片的话, 数据输出时要去掉一个ole头信息
加载更多回复(3)

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧