从数据库里读出二进制数据的问题

jlcanoe 2004-08-04 06:04:21
我用<img src="showimg.asp?id=x">(x是一个数字)在页面中显示图片(.jpg),却有的可以显示,有的不可以显示。我试过了,不是图片文件大小的问题,是不是图片本身制作的问题啊?不知是哪里的问题,各位帮忙。

“showimg.asp”文件代码如下:

<!--#include file ="Conn.asp"-->
<%
Response.Expires = 0
Response.Buffer = TRUE
Response.Clear

ID = trim(Request("id"))
Response.ContentType = "image/*"
set rs_img=Server.Createobject("ADODB.Recordset")
sql="select img from TImage where ID=" & id
rs_img.open sql,conn,1,1


img_size = rs_img("img").ActualSize
Response.BinaryWrite rs_img("img").getChunk(img_size)
rs_img.close
set rs_img=nothing
set conn=nothing
%>
...全文
117 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
baisun 2004-08-05
他就是让你看看图片保存的对不对
回复
jlcanoe 2004-08-05
to xieyj(如果有一天...) :

你给我的代码是往数据库中添加图片的代码。
我现在搞不清楚,是往数据库中写的过程有问题,还是从数据库里读的过程有问题。
而显示图片,有的可以,有的不行,我想知道问题出在哪里。

to mjpclab(http://mjpclab.8u8.com) :
你的代码,能给解释一下吗?
回复
mjpclab 2004-08-04
先去掉78字节的OLE对象文件头

img_size = rs_img("img").ActualSize
rs_img("img").getChunk(78)
Response.BinaryWrite rs_img("img").getChunk(img_size - 78)
回复
xieyj 2004-08-04
<%
response.buffer=true
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 conn=server.createobject("adodb.connection")
conn.connectionstring="driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("images.mdb")
conn.open

set rs=server.createobject("adodb.recordset")
rs.open "select * from [images] where id is null",conn,1,3
rs.addnew
rs("img").appendchunk mydata
rs.update
rs.close
set rs=nothing
set conn=nothing
%>
回复
adminn 2004-08-04
顺便请教一下
img字段的数据类型是什么?
回复
dongliu 2004-08-04
先手动显示一遍,再检查程序
回复
aspczlover 2004-08-04
和图片格式有关系吧,
有些格式的好像不能显示
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2004-08-04 06:04
社区公告
暂无公告