欢迎光临
我们一直在努力

使用ASP实现基于WEB的数据库资料系统-ASP教程,数据库相关

建站超值云服务器,限时71元/月

 asp简介
asp(active server page)是microsoft公司推出的基于iis(internet information server)的动态网页开发技术。asp都是以isapi(internet service api)的原理实现的,它通常使用vbscript语言进行html文件的嵌入式脚本设计,文件名后缀是.asp。它的原理如图1所示。
当浏览器向web server发出.asp请求时,web server开始运行asp脚本程序,然后web server启动asp,asp将所请求的文件从头到尾进行检查,执行文件中的嵌入的asp脚本,最后将执行结果html网页返回给web server。web server再将该html网页发送给客户端。这样,用户可以根据浏览器发出的请求设计asp脚本,从而由不同的请求产生不同的脚本执行结果。asp具有许多优点(如使用简单,执行效率较高等),但它同时也具有其先天的弱点,即它使用的是脚本语言,功能有限,难以完成许多复杂的业务功能。微软为了弥补这一弱点,提供了在asp中使用activex组件的功能,从而许多复杂的功能就可以用其它许多高级语言(如visual c++)来实现,然后将这些功能包装为activex,供asp调用。ado(activex data object)就是在asp中常用的数据库访问组件。

web数据库资料系统实现的关键技术
要实现基于web的数据库资料系统,关键要解决两个方面的问题。第一要实现将客户端文件资料通过浏览器上载到web服务器,并将文件内容保存到数据库中;第二要实现从数据库中读取资料内容,并将内容发送到客户端浏览器。为说明如何实现这两项技术,我们用一个简单的数据库进行示例(这里使用的数据库环境是ms sql server 6.5),这个数据库只有一个表(uploadfile),其结构如图2所示。
其中,id字段是关键字,自增类型;title表示资料标题;filename是上载的资料文件名;content字段如何存放二进制资料文件内容。下面将讲述实现将客户端文件资料通过浏览器上载到web服务器,并将文件内容保存到数据库中以及如何从数据库中读取资料内容,并将内容发送到客户端浏览器。web服务器平台是windows nt server 4.0 + iis4.0 +sql server 6.5,客户端使用ie4.0,系统调试通过。

使用asp实现文件上载到web服务器
基于web方式上载文件,要遵从rfc1867标准(ie3.0和netscape 3.0 以上版本浏览器都支持)。但iis没有提供这方面的支持。因此要使用asp实现文件上载,必须调用相应的activex组件,这个activex组件asp本身没有提供,可以自己开发(根据rfc1867标准),也可以使用第三方提供的组件。这里介绍的方法使用第三方的组件aspupload.dll,在使用前必须先在web服务器上注册(将aspupload.dll拷贝到\winnt\system32目录下,然后云运行“regsvr32 aspupload.dll”)。
其中客户端源文件如下(uploadtest.htm):
<html>
<head>
<meta http-equiv=”content-type” content=”text/html; charset=gb2312″>
<title>文件上载客户端</title>
</head>
<body>
<form method=”post” action=”uploadtest1.asp” enctype=”multipart/form-data”
name=”uploadform”>
<p><input type=”file” name=”file1″> </p>
<p><input type=”submit” value=”submit” name=”upload”></p>
</form>
</body>
</html>
其中客户端文件要注意两点:
* 文件上载提交表单(form)的enctype必须指定为“multipart/form-data”
* 语句<input type=”file” name=”file1″>表示上载文件域,用户可以在该域中输入或选定文件。
服务器端源文件如下(uploadtest1.asp):
<%response.buffer=true%>
<html>
<%set upload=server.createobject(“persits.upload.1”) 创建文件上载组件
count=upload.save(“e:\aspupload”) 将客户端文件保存到web服务器端的本地硬盘上%>

<head>
<meta http-equiv=”content-type” content=”text/html; charset=gb2312″>
<title>upload test</title>
<meta name=”generator” content=”microsoft frontpage 3.0″>
</head>
<body>
<p>上载了<%=count%>个文件</p>
<p>file has been uploaded.</p>
</body>
</html>
其中,脚本set upload=server.createobject(“persits.upload.1”)创建了文件上载组件,该组件通过调用save方法将浏览器端的文件内容保存到指定路径。

将文件存在数据库中
将文件保存在数据库中主要用了aspupload组件中文件对象的todatabase方法。源文件如下:
客户端源文件(uploadtodb.htm):
<html>
<head>
<meta http-equiv=”content-type” content=”text/html; charset=gb2312″>
<title>文件上载客户端</title>
</head>
<body>
<form method=”post” action=”uploadtodb.asp” enctype=”multipart/form-data”
name=”formupload”>
<p><input type=”file” name=”fileupload”> </p>
<p><input type=”submit” value=”上载” name=”b1″></p>
</form>
<p><a href=”readfile.asp”>读取数据库中文件</a></p>
</body>
</html>

服务器端源文件(uploadtodb.asp):
<html>
<head>
<meta http-equiv=”content-type” content=”text/html; charset=gb2312″>
<title>文件上载到数据库</title>
</head>
<body>
<%set upload=server.createobject(“persits.upload.1”)
count=upload.save(“e:\aspupload”)
on error resume next
set fileobj=upload.files(“fileupload”)
sql=”insert into uploadfile (title,filename,content) values (“&fileobj.path&”,”&fileobj.path&”,?)”
response.write sql
fileobj.todatabase “dsn=fileupload;uid=sa;”,sql
if err<>0 then
response.write “error saving the file:”&err.description
else
fileobj.delete
response.write “success!”
end if
%>
</body>
</html>

从数据库中读取文件内容并发送给客户端浏览器
从数据库中读取内容在发送给浏览器之前,首先必须让浏览器知道内容的数据类型,这通过向客户端发送contenttype描述实现。为简单起见,这里假设发送的内容是word文档,并且显示最新插入的记录。源文件如下:
客户端源文件为uploadtodb.htm(同上一部分的客户端文件)。
服务器端源文件(readfile.asp):
<%response.expires = 0
response.buffer=true%>
<%response.clear
response.contenttype = “application/msword”
set conn=server.createobject(“adodb.connection”)
conn.open “dsn=fileupload;uid=sa;”
set rs1=conn.execute(“select maxid=max(id) from uploadfile”)
sql=”select * from uploadfile where id=”&rs1(“maxid”)
set rs=conn.execute(sql)
response.binarywrite rs(“content”)
rs.close
rs1.close
conn.close
response.end
%>
其中,web server向客户端发送content-type=”application/msword”,使客户端认为这是word文档,然后服务器从数据库中读取文件内容(为简单起见,假定是数据库中最后一条记录),然后以二进制流的方式向客户端发送(调用asp内置对象response的binarywrite方法)。当客户端接收到这些内容后便自动启动word ole服务,使word控件嵌在浏览器ie中将收到的内容格式化显示。

总结
综上,通过使用asp脚本和文件上载组件及ado组件,可以方便地实现web数据库资料系统的关键技术。有了上述技术,对于基于web的数据库资料的简单系统便可以很容易地得到扩充和实现。笔者以上述技术为核心开发了一套internet上的数据库档案资料管理系统,系统非常稳定可靠(很大一部分要归功于aspupload组件的稳定性),档案内容包含html、word、excel、文本、图像等各种格式,档案资料的管理、维护和检索十分方便,受到用户的一致好评。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 使用ASP实现基于WEB的数据库资料系统-ASP教程,数据库相关
分享到: 更多 (0)