
 
 | 
| 技术资料  > ASP技术 > 客户端相关 : 从ASP调用SQL中的图像(转) |  
从ASP调用SQL中的图像(转) March 25,2004 |  
从ASP调用SQL中的图像 
 
 
eNet学院 
 
 
关键词:Sql Server, ADO 
 
如何处理ASP中的图象 
 
在用ASP编程中,很多时侯要用到图象。对于单纯从数据库中处理一个图象,方法大家讲了很多,也不难, 
 
可以看下面的代码: 
 
这里假设你有个数据库名字叫:PUBS,在数据库中有一个叫:PUB_INFO的表,在表中有一个LOGO 
 
的BLOB列。我们查出PUB_ID=0736的人的相片。 
 
FILE: SHOWIMG.ASP 
 
*************************************** 
 
<%@ LANGUAGE="VBSCRIPT" %> 
 
<% 
 
' Clear out the existing HTTP header information 
 
Response.Expires = 0 
 
Response.Buffer = TRUE 
 
Response.Clear 
 
' Change the HTTP header to reflect that an image is being passed. 
 
Response.ContentType = "image/gif" 
 
Set cn = Server.CreateObject("ADODB.Connection") 
 
' The following open line assumes you have set up a System DataSource 
 
' by the name of myDSN. 
 
cn.Open "DSN=myDSN;UID=sa;PWD=;DATABASE=pubs" 
 
Set rs = cn.Execute("SELECT logo FROM pub_info WHERE pub_id='0736'") 
 
Response.BinaryWrite rs("logo") 
 
Response.End 
 
%> 
 
***************************************** 
 
执行这个ASP文件就可以看到你存在数据库中的图象了。 
 
但如果是同时处理文字和图象就会有些困难了:-( 
 
比如:一个企业的人员管理,后台数据库可以用SYBASE或SQL SERVER等。(我在这用SQL SERVER)当 
 
你在企业内部需要用到BROWSE/SERVER方式,即用浏览器查看员工的个人信息时,就即要处理文字信息同时 
 
还要用到关于图象的技巧。 
 
问题在于你显示文字信息时HTML的HEAD中的CONTENT=“TEXT/HTML”,而显示图象则必须是 
 
CONTENT=“IMAGE/GIF”或者是CONTENT=”IMAGE/JPEG“。因此你是无法只用一个ASP文件就把文字信息和 
 
图象都处理完的,解决的办法是:用一个单独的ASP文件处理图象,然后在处理文字信息的ASP文件中调用 
 
这个ASP文件。 
 
在这给大家介绍一个我的解决方法,希望大家一起讨论: 
 
环境:WINNT4.0 SQL SERVER IIS3.0 
 
数据库名:RSDA 
 
表名:RSDA_TABLE 
 
目的:从RSDA_TABLE中查出ID=00001的人员的信息,包括姓名,年龄和照片 
 
第一步:创建一个查询表单RSDA.HTM: 
 
********************************** 
 
<html> 
 
<head> 
 
</head> 
 
<body> 
 
<form method="POST" action="SEARCH.ASP"> 
 
<p>请输入编号:<input type="text" name="T1" size="20"><input 
 
type="submit" value="提交" name="B1"><input type="reset" value="复原" name="B2"></p> 
 
</form> 
 
</body> 
 
</html> 
 
*********************************** 
 
第二步:建立SEARCH.ASP 
 
*********************************** 
 
<html> 
 
<head> 
 
<meta http-equiv="content-type" content="text/html;charset=gb2312"> 
 
<title>查询结果</title> 
 
</head> 
 
<body bgColor=Azure> 
 
<% 
 
session("RSDA_ID")=Request.Form("T1") '这里我用了一个SESSION变量,是为了在处理图象的ASP文件中再次调用  
 
temp_id=session("RSDA_ID") 
 
<font size=4 color=OrangeRed> 查询结果:</font> 
 
<%set conntemp=server.createobject("adodb.connection") 
 
conntemp.open "dsn=RSDA;uid=sa;pwd=SA" 
 
set rstemp=conntemp.execute("select * from RSDA_TABLE where rsda='"&temp_id&"'") 
 
%> 
 
<% 'put headings on the table of field names 
 
nobody="对不起!在我们的数据库里没有您要找的资料!"%> '判断是否有这个人 
 
<%if rstemp.eof then %> 
 
<font size="5" color=OrangeRed> <%Response.Write(nobody)%></font> 
 
<%else%> 
 
<div align="center"> 
 
<center> 
 
<table border="1" width="73%" height="399"> 
 
<tr> 
 
<td width="21%" height="49" align="center"><p align="center">姓 名</td> 
 
<td width="30%" height="49" align="center"> 
 
<font size=4 color=OrangeRed><%=rstemp(0)%></font></td> 
 
</td> 
 
<tr> 
 
<td width="21%" height="47"><p align="center">年 龄</td> 
 
<td width="30%" height="47" align="center"> 
 
<font size=4 color=OrangeRed><%=rstemp(0)%></font></td> 
 
</tr> 
 
<tr> 
 
<td width="49%" height="146" rowspan="3" colspan="2"> 
 
<img src="jpg.asp"></td> 'JPG.ASP就是我们将要建立的专门处理图象的ASP文件 
 
</tr> 
 
</table> 
 
</center></div> 
 
rstemp.close 
 
set rstemp=nothing 
 
conntemp.close 
 
set conntemp=nothing 
 
%> 
 
</BODY> 
 
</HTML> 
 
*********************************** 
 
第三步:建立处理图象的ASP文件。(JPG.ASP) 
 
*********************************** 
 
<% 
 
Response.Expires = 0 
 
Response.Buffer = TRUE 
 
Response.Clear 
 
 
' Open database 
 
Set conntemp = Server.CreateObject("ADODB.Connection") 
 
conntemp.open "dsn=RSDA;uid=sa;pwd=SA" 
 
'change http header 
 
Response.ContentType = "image/jpeg" ' or "IMAGE/GIF" 
 
 
' Get picture 
 
 
TEMP_ID=session("RSDA_ID") 
 
Set Rs = conntemp.Execute("SELECT photo from RSDA_table where ID='"&TEMP_ID&"'") 
 
Response.BinaryWrite Rs("photo") 
 
Session.Abandon  
 
Response.End 
 
%> 
 
********************************** 
 
这里主要就是用到了一个小技巧就是利用了一个SESSION变量来实现两次同条件查询。 
 
大家如我上述只需少量改动,就可以实现一个页面既有文字又有图象了! |  
 
 | 
  
Copyright © 2001-2008 Shenzhen Hiblue Software Team All rights reserved