如何处理ASP中的图象

王朝asp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

在用ASP编程中,很多时侯要用到图象。对于单纯从数据库中处理一个图象,方法大家讲了很多,也不难,可以看下面的代码:这里假设你有个数据库名字叫:PUBS,在数据库中有一个叫:PUB_INFO的表,在表中有一个LOGO的BLOB列。我们查出PUB_ID=0736的人的相片。

file&:SHOWIMG.ASP

***************************************

<%@LANGUAGE="VBSCRIPT"%>

<%

ClearouttheexistingHTTPheaderinformation

Response.Expires=0

Response.Buffer=TRUE

Response.Clear

ChangetheHTTPheadertoreflectthatanimageisbeingpassed.

Response.ContentType="image/gif"

Setcn=Server.CreateObject("ADODB.Connection")

ThefollowingopenlineassumesyouhavesetupaSystemDataSource

bythenameofmyDSN.

cn.Open"DSN=myDSN;UID=sa;PWD=;DATABASE=pubs"

Setrs=cn.Execute("SELECTlogoFROMpub_infoWHEREpub_id=0736")

Response.BinaryWriters("logo")

Response.End

%>

*****************************************

执行这个ASP文件就可以看到你存在数据库中的图象了。

但如果是同时处理文字和图象就会有些困难了:-(

比如:一个企业的人员管理,后台数据库可以用SYBASE或SQLSERVER等。(我在这用SQLSERVER)当你在企业内部需要用到BROWSE/SERVER方式,即用浏览器查看员工的个人信息时,就即要处理文字信息同时还要用到关于图象的技巧。

问题在于你显示文字信息时HTML的HEAD中的CONTENT=“TEXT/HTML”,而显示图象则必须是CONTENT=“IMAGE/GIF”或者是CONTENT=”IMAGE/JPEG“。因此你是无法只用一个ASP文件就把文字信息和图象都处理完的,解决的办法是:用一个单独的ASP文件处理图象,然后在处理文字信息的ASP文件中调用这个ASP文件。

在这给大家介绍一个我的解决方法,希望大家一起讨论:

环境:WINNT4.0SQLSERVERIIS3.0

数据库名:RSDA

表名:RSDA_TABLE

目的:从RSDA_TABLE中查出ID=00001的人员的信息,包括姓名,年龄和照片

第一步:创建一个查询表单RSDA.HTM:

**********************************

<html>

<head>

</head>

<body>

<formmethodOST"action="SEARCH.ASP">

<p>请输入编号:<inputtype="text"name="T1"size="20"><input

type="submit"value="提交"name="B1"><inputtype="reset"value="复原"name="B2"></p>

</form>

</body>

</html>

***********************************

第二步:建立SEARCH.ASP

***********************************

<html>

<head>

<metahttp-equiv="content-type"content="text/html;charset=gb2312">

<title>查询结果</title>

</head>

<bodybgColor=Azure>

<%

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

temp_id=session("RSDA_ID")

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

<%setconntemp=server.createobject("adodb.connection")

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

setrstemp=conntemp.execute("select*fromRSDA_TABLEwherersda="&temp_id&"")

%>

<%putheadingsonthetableoffieldnames

nobody="对不起!在我们的数据库里没有您要找的资料!"%>判断是否有这个人

<%ifrstemp.eofthen%>

<fontsize="5"color=OrangeRed><%Response.Write(nobody)%></font>

<%else%>

<divalign="center">

<center>

<tableborder="1"width="73%"height="399">

<tr>

<tdwidth="21%"height="49"align="center"><palign="center">姓名</td>

<tdwidth="30%"height="49"align="center">

<fontsize=4color=OrangeRed><%=rstemp(0)%></font></td>

</td>

<tr>

<tdwidth="21%"height="47"><palign="center">年龄</td>

<tdwidth="30%"height="47"align="center">

<fontsize=4color=OrangeRed><%=rstemp(0)%></font></td>

</tr>

<tr>

<tdwidth="49%"height="146"rowspan="3"colspan="2">

<imgsrc="jpg.asp"></td>JPG.ASP就是我们将要建立的专门处理图象的ASP文件

</tr>

</table>

</center></div>

rstemp.close

setrstemp=nothing

conntemp.close

setconntemp=nothing

%>

</BODY>

</HTML>

***********************************

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

***********************************

<%

Response.Expires=0

Response.Buffer=TRUE

Response.Clear

Opendatabase

Setconntemp=Server.CreateObject("ADODB.Connection")

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

changehttpheader

Response.ContentType="image/jpeg"or"IMAGE/GIF"

Getpicture

TEMP_ID=session("RSDA_ID")

SetRs=conntemp.Execute("SELECTphotofromRSDA_tablewhereID="&TEMP_ID&"")

Response.BinaryWriteRs("photo")

Session.Abandon

Response.End

%>

**********************************

这里主要就是用到了一个小技巧就是利用了一个SESSION变量来实现两次同条件查询。大家如我上述只需少量改动,就可以实现一个页面既有文字又有图象了!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航