冲浪提速秘技之使用离线浏览器
ASP和数据库结合处理图像
在用ASP编程中,很多时侯要用到图像。对于单纯地把一幅图像存入数据库和从数据库中取出加以显示,这个基本上没有什么难度, 看下面的代码的方法:
我们看Office 2000 Access的示例数据库Northwind,在数据库中有一个叫类别的表,在表中有一个叫图片的OLE对象列。我们查出类别ID=1的商品的图片。
FILE: SHOWIMG.ASP
***************************************
<%@ LANGUAGE="VBSCRIPT" %>
<%
'清除HTTP标头信息
Response.Expires = 0
Response.Buffer = TRUE
Response.Clear
'改变HTTP标头信息,表明将要显示的是图片
Response.ContentType = "image/gif"
'使用OLEDB接连Access数据库,数据库放在C:\DATA目录中,你可以改为你的数据库所在的目录
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=C:\DATA\NORTHWIND.MDB"
Set rs = cn.Execute("SELECT 图片 FROM 类别 WHERE 类别ID=1")
Response.BinaryWrite rs("图片")
Response.End
%>
*****************************************
执行这个ASP文件就可以看到你存在数据库中的图像了。
但是这样能够同时处理文字和图像吗?肯定不能。
例如一个企业的人员管理,后台数据库用SQL SERVER,当你在企业内部需要用到BROWSE/SERVER方式,即用浏览器查看员工的个人信息时,就即要处理文字信息同时还要用到关于图像的技巧。
问题在于你显示文字信息时HTML的HEAD中的CONTENT="TEXT/HTML",而显示图像则必须是 CONTENT="IMAGE/GIF"或者是CONTENT="IMAGE/JPEG"。因此你是无法只用一个ASP文件就把文字信息和图像都处理完,解决的办法是:用一个单独的ASP文件处理图像,然后在处理文字信息的ASP文件中调用这个ASP文件。
下面是一种可行的解决方法:
环境:Win 98 + Access +PWS
数据库名:RSDA
表名:YGXX
目的:从YGXX中查出ID=00001的人员的信息,包括姓名,年龄和照片
第一步:创建一个查询表单RSDA.HTM:
**********************************
<HTML>
<HEAD>
<TITLE>人事档案查询</TITLE>
</HEAD>
<BODY>
<CENTER>
<form method="POST" action="SEARCH.ASP">
请输入员工编号:<input type="text" name="bh" size="6"><br><br>
<input type="submit" value="看看他了" name="submit">
<input type="reset" value="另外选一个" name="reset">
</FORM>
</CENTER>
</BODY>
</HTML>
***********************************
第二步:建立SEARCH.ASP
***********************************
<html>
<head>
<title>查询结果</title>
</head>
<body>
<%
session("PID")=Request.Form("BH")
'这里使用了一个SESSION变量,是为了在处理图像的ASP文件中再次调用
temp_id=session("PID")
<center>
<h1>查询结果</h1><br>
<%
set Conn=server.createobject("adodb.connection")
Conn.open " PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=C:\DATA\RSDA.MDB
"
set Rs=Conn.execute("select * from YGXX where rsda='"&temp_id&"'")
%>
<%
nobody="对不起!在我们的数据库里没有你要找的资料!"
%>
'判断是否有这个人
<%if Rs.eof then %>
<%Response.Write(nobody)%>
<%else%>
<div align="center">
<center>
<table border="1">
<tr>
<td width="21%" height="49" align="center">姓
名</td>
<td width="30%" height="49" align="center">
<%=rstemp(0)%> </td>
</td>
<tr>
<td width="21%" height="47"><p align="center">年
龄</td>
<td width="30%" height="47" align="center">
<%=rstemp(0)%> </td>
</tr>
<tr>
<td width="49%" height="146" rowspan="3"
colspan="2">
<img src="imgshow.asp"></td> 'imgshow.asp就是我们将要建立的专门处理图像的ASP文件
</tr>
</table>
</center></div>
rstemp.close
set rstemp=nothing
conntemp.close
set conntemp=nothing
%>
</BODY>
</HTML>
***********************************
第三步:建立处理图像的ASP文件。(imgshow.asp)
***********************************
<%
Response.Expires = 0
Response.Buffer = TRUE
Response.Clear
Set Conn= Server.CreateObject("ADODB.Connection")
Conn.open " PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=C:\DATA\RSDA.MDB
"
Response.ContentType = "image/jpeg" '或者"IMAGE/GIF"
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变量来实现两次同条件查询。大家可以根据上面所介绍的略加改动,就可以实现一个页面既有文字又有图像了!