通俗基础教程
电脑操作教程
电脑怎样拨号上网
如何做个人网页
怎样做局域网
Word教程(文字处理)
图形图象处理入门
经典提高教程
怎样使用代理服务器
如何做无盘工作站
Photoshop教程
Dreamweaver教程
Flash教程
Firework教程
Frontpage2000教程
Authware教程
Office2000教程
如何制作动画图片
OICQ&ICQ使用方法

高手学习指南

硬件升级技巧
CGI教程
ASP教程

PHP教程

注册表使用技巧
路由器的设置
网站建设指南
SQL
合作网站
栏目制作月光软件
最近更新:
类别:网站制作

使用ASP实现基于WEB的数据库资料系统
http://www.tongyi.net 作者:李寅

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、文本、图像等各种格式,档案资料的管理、维护和检索十分方便,受到用户的一致好评。

   
相关教程
怎么样才能控制弹出新窗口的位置?
怎么样才能控制弹出新窗口的位置?
怎样控制弹出窗口大小?
网页中制作边角圆润的图形
网页中飘动的图片的制作
如何在一个网页中实现多个链接效果
Dreamweaver中层的定位
实现动画效果的 Timeline
网页制作中的声音层叠样式表单
网页中轻松实现三维字体
DreamWeaver中表单的使用和电子邮件表单的制作
怎么在网页制作拖拽的拼图效果
使用ASP实现基于WEB的数据库资料系统