往SQL数据库的image字段里放东西怎么就那么麻烦?请教一个最简单的方法。

FrankZYZ 2005-05-07 04:44:36
请高手给段代码,要求:
1)使用ASP,VBScript,IIS,
2)仅仅演示将image图片上传到服务器,以及存进image字段,再将其取出并显示到客户的ie上。
其他的功能,诸如限制长度、校验、、、、全部略去,以免核心不突出。
非常感谢!

==========
最后,严重批评所有的SQL数据库,居然这么一个日常功能都没给个简明的方法。我们拭目以待,看国产数据库是否敢突破这个东西。
...全文
126 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
FrankZYZ 2005-05-11
  • 打赏
  • 举报
回复
在上面代码的showimg.asp中,将html的各标记去掉,剩:
<%
Dim id
id = trim(Request("id"))

strconn = "Driver={SQL Server};Description=sqldemo;SERVER=192.168.1.180;" &"UID=sa;Password=123456;DATABASE=webtest"
set conn = server.createobject("adodb.connection")
conn.open strconn
set rs_img=Server.Createobject("ADODB.Recordset")
'sql="select * from tbl_images where id='"&id&"'"
sql="select * from items where id ='"&id&"'"
rs_img.open sql,conn,1,3,1
%>

</head>
<body>

<%

Response.Expires = 0
Response.Buffer = TRUE
'Response.Clear

Response.ContentType = "image/*"

Dim img_size
img_size = rs_img("image").ActualSize
Response.BinaryWrite rs_img("image").getChunk(img_size)
rs_img.close
set rs_img=nothing
%>
就正确了。
感谢楼上的各位回复。
FrankZYZ 2005-05-10
  • 打赏
  • 举报
回复
’===================上传和显示界面

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<html>
<head>
<%

strconn = "Driver={SQL Server};Description=sqldemo;SERVER=192.168.1.180;" &"UID=sa;Password=123456;DATABASE=webtest"
set conn = server.createobject("adodb.connection")
conn.open strconn
'set rsCat= conn.execute("select * from items")

%>
</head>
<%
Set rs_img = Server.CreateObject("ADODB.Recordset")
sql_img = "select * from items"
rs_img.Open sql_img,conn,1,3,1

%>

<body><form name="form1" ENCTYPE="multipart/form-data"
ACTION="img_upfile.asp" METHOD="POST">
<input NAME="picture" TYPE="FILE">
</form>
<%

response.Write("this is test")

%>
<img src="showimg.asp?id=1">

</body>
</html>

'-----------------上传到库:img_up.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<%
dim newid

newid=1
response.buffer=true
formsize=request.totalbytes
formdata=request.binaryread(formsize)

Function ImageUp(formsize,formdata)
bncrlf=chrb(13) & chrb(10)
divider=leftb(formdata,instrb(formdata,bncrlf)-1)
datastart=instrb(formdata,bncrlf&bncrlf)+4
dataend=instrb(datastart+1,formdata,divider)-datastart
Imageup=midb(formdata,datastart,dataend)
End Function
mydata = ImageUp(FormSize,Formdata)
strconn = "Driver={SQL Server};Description=sqldemo;SERVER=192.168.1.180;" &"UID=sa;Password=123456;DATABASE=webtest"
set conn = server.createobject("adodb.connection")
conn.open strconn
Set rs_img = Server.CreateObject("ADODB.Recordset")
sql_img = "SELECT * FROM ITEMS where id='"&newid&"'"
rs_img.Open sql_img,conn,1,3,1
If rs_img.eof Then
strinsert = 1
Else
strinsert = 0
End If
If strinsert = 1 Then
rs_img.addnew
rs_img("id") = newid

rs_img("image").appendchunk mydata
rs_img.update
Else

rs_img("image").appendchunk mydata
rs_img.update
End If
rs_img.close
set rs_img=nothing
set conn=nothing

%>
</head>

<body>

</body>
</html>

‘-----------------------显示--showimg.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<html>
<head>
<%
Dim id
id = trim(Request("id"))

strconn = "Driver={SQL Server};Description=sqldemo;SERVER=192.168.1.180;" &"UID=sa;Password=123456;DATABASE=webtest"
set conn = server.createobject("adodb.connection")
conn.open strconn
set rs_img=Server.Createobject("ADODB.Recordset")
'sql="select * from tbl_images where id='"&id&"'"
sql="select * from items where id ='"&id&"'"
rs_img.open sql,conn,1,3,1
%>

</head>
<body>

<%

Response.Expires = 0
Response.Buffer = TRUE
'Response.Clear

Response.ContentType = "image/*"

Dim img_size
img_size = rs_img("image").ActualSize
Response.BinaryWrite rs_img("image").getChunk(img_size)
rs_img.close
set rs_img=nothing
%>

</body>
</html>

上面用到一个SQL数据库的表:items,里面有关的字段是id 和 image

使用上面的代码,实现了把jpg文件上传到数据库,并能返回得到,但在ie里显示那个图片时,总是一个叉
为检查通过showimg.asp是否能得到数据库里的图片,右键点那个叉看其属性,得到其链接,形如:
http://192.168.../showimg.asp?id=1,将其拷贝到flashget,这时,flashget可以下载得到一个名字为showimg.asp的文件,将其改名为showimg.asp.jpg,则可在acdsee中显示出图来。
所以,使用上面的代码,既可以上传图片文件到库,也可以从库中抽提出图来,但不知道为什么不能显示到ie上。

请高手给予解答,谢谢!

Larrystudy 2005-05-09
  • 打赏
  • 举报
回复
帮着顶顶
像一个 id 对应多个图片 该怎么显示出来啊
Larrystudy 2005-05-09
  • 打赏
  • 举报
回复
getimage.asp
<%
Set conn=server.createobject("adodb.connection")
conn.open ConStr

Set rs = conn.Execute("SELECT Photo FROM [Member] WHERE id="&Request("id"))

Response.BinaryWrite rs("Photo")

conn.Close
Set rs = nothing
Set conn = nothing %>

如果一个 id 对应多个图片就不行了
FrankZYZ 2005-05-08
  • 打赏
  • 举报
回复
感谢楼上的回复。
mydata=midb(formdata,datastart,dataend)
中的 midb 是个什么函数?
comflyer0590 2005-05-07
  • 打赏
  • 举报
回复
上传:
<%
Set conn=server.createobject("adodb.connection")
conn.open ConStr

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 rec=server.createobject("ADODB.recordset")

rec.Open "SELECT * FROM [Member] where id="&session("userid"),conn,1,3

rec("Photo").appendchunk mydata
rec.update

rec.close

set rec=nothing

set conn=nothing

%>
<font size="4" color="#FF0000"><b>新照片上传成功!</font>

显示:
show.asp
<a href="getimage.asp?id=<%=rs("id")%>" target="_blank"><img SRC="getimage.asp?id=<%=rs("id")%>" width="188" height="127" border="0"></a>

getimage.asp
<%
Set conn=server.createobject("adodb.connection")
conn.open ConStr

Set rs = conn.Execute("SELECT Photo FROM [Member] WHERE id="&Request("id"))

Response.BinaryWrite rs("Photo")

conn.Close
Set rs = nothing
Set conn = nothing %>
galaxywaif 2005-05-07
  • 打赏
  • 举报
回复
顶一下,我正想那么干。。。。。
FrankZYZ 2005-05-07
  • 打赏
  • 举报
回复
楼上的朋友,首先感谢你的回复。
然后,我要拍你一下。

难道你觉得把image类型的东西塞进sql数据库的image字段是很轻松愉快的事情吗?怎么就不能像一般的int和char类的那样使用常规的sql来操作呢?却要使用什么转二进制等方法。

另外,我的问题很清楚吧,是要在ie里上传image文件到服务器,并塞进image字段去。然后另外要把它从那里掏出来显示到网页上。我求的是一两段代码。。
bigluckyfox 2005-05-07
  • 打赏
  • 举报
回复
不明白这位朋友为什么要批评所有的SQL数据库……~汗

如果是说直接将图片存到数据库里,可以转化成二进制来存

如果只是将图片传到服务器空间,而将图片路径存在数据库中,就更简单了:上传的同时获取路径,直接存取就好

28,406

社区成员

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

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