从ASP调用SQL中的图像

如何处理ASP中的图象

在用ASP编程中,很多时侯要用到图象。对于单纯从数据库中处理一个图象,方法大家讲了很多,也不难,

可以看下面的代码:

这里假设你有个数据库名字叫:PUBS,在数据库中有一个叫:PUB_INFO的表,在表中有一个LOGO

的BLOB列。我们查出PUB_ID=0736的人的相片。

FILE: SHOWIMG.ASP


1@ LANGUAGE="VBSCRIPT" 
 1   
 2  
 3' Clear out the existing HTTP header information   
 4  
 5Response.Expires = 0   
 6  
 7Response.Buffer = TRUE   
 8  
 9Response.Clear   
10  
11' Change the HTTP header to reflect that an image is being passed.   
12  
13Response.ContentType = "image/gif"   
14  
15Set cn = Server.CreateObject("ADODB.Connection")   
16  
17' The following open line assumes you have set up a System DataSource   
18  
19' by the name of myDSN.   
20  
21cn.Open "DSN=myDSN;UID=sa;PWD=;DATABASE=pubs"   
22  
23Set rs = cn.Execute("SELECT logo FROM pub_info WHERE pub_id='0736'")   
24  
25Response.BinaryWrite rs("logo")   
26  
27Response.End   
28  

执行这个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:


1<html>
2<head>
3</head>
4<body>
5<form action="SEARCH.ASP" method="POST">
6<p>请输入编号:<input name="T1" size="20" type="text"/><input name="B1" type="submit" value="提交"/><input name="B2" type="reset" value="复原"/></p>
7</form>
8</body>
9</html>

第二步:建立SEARCH.ASP


1<html>
2<head>
3<meta content="text/html;charset=utf-8" http-equiv="content-type"/>
4<title>查询结果</title>
5</head>
6<body bgcolor="Azure">   
7  

session("RSDA_ID")=Request.Form("T1") '这里我用了一个SESSION变量,是为了在处理图象的ASP文件中再次调用

temp_id=session("RSDA_ID")

<font color="OrangeRed" size="4"> 查询结果:</font>

&lt;%set conntemp=server.createobject("adodb.connection")

conntemp.open "dsn=RSDA;uid=sa;pwd=SA"

set rstemp=conntemp.execute("select * from RSDA_TABLE where rsda='"&amp;temp_id&amp;"'")

1  

'put headings on the table of field names

nobody="对不起!在我们的数据库里没有您要找的资料!"

1  

if rstemp.eof then

1  
2<font color="OrangeRed" size="5"> ```
3Response.Write(nobody)
4```</font>   
5  

else

 1  
 2<div align="center">
 3<center>
 4<table border="1" height="399" width="73%">
 5<tr>
 6<td align="center" height="49" width="21%"><p align="center">姓 名</p></td>
 7<td align="center" height="49" width="30%">
 8<font color="OrangeRed" size="4">```
 9=rstemp(0)
10```</font></td>
11
12<tr>
13<td height="47" width="21%"><p align="center">年 龄</p></td>
14<td align="center" height="47" width="30%">
15<font color="OrangeRed" size="4">```
16=rstemp(0)
17```</font></td>
18</tr>
19<tr>
20<td colspan="2" height="146" rowspan="3" width="49%">
21<img src="jpg.asp"/></td> 'JPG.ASP就是我们将要建立的专门处理图象的ASP文件   
22  
23</tr>
24</tr></table>
25</center></div>   
26  
27rstemp.close   
28  
29set rstemp=nothing   
30  
31conntemp.close   
32  
33set conntemp=nothing   
34  
35%&gt;   
36  
37</body>
38</html>

第三步:建立处理图象的ASP文件。(JPG.ASP)


 1   
 2  
 3Response.Expires = 0   
 4  
 5Response.Buffer = TRUE   
 6  
 7Response.Clear   
 8  
 9  
10' Open database   
11  
12Set conntemp = Server.CreateObject("ADODB.Connection")   
13  
14conntemp.open "dsn=RSDA;uid=sa;pwd=SA"   
15  
16'change http header   
17  
18Response.ContentType = "image/jpeg" ' or "IMAGE/GIF"   
19  
20  
21' Get picture   
22  
23  
24TEMP_ID=session("RSDA_ID")   
25  
26Set Rs = conntemp.Execute("SELECT photo from RSDA_table where ID='"&TEMP_ID&"'")   
27  
28Response.BinaryWrite Rs("photo")   
29  
30Session.Abandon   
31  
32Response.End   
33  

这里主要就是用到了一个小技巧就是利用了一个SESSION变量来实现两次同条件查询。

大家如我上述只需少量改动,就可以实现一个页面既有文字又有图象了!

Published At
Categories with Web编程
Tagged with
comments powered by Disqus