|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在实现ERP等高端的ASP应用时,用户需要提供核心的经营资料,需要ASP商有很高的信用度。楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。web|数据|数据库
ASP简介
ASP(ActiveServerPage)是Microsoft公司推出的基于IIS(InternetInformationServer)的静态网页开辟手艺。ASP都是以ISAPI(InternetServiceAPI)的道理完成的,它一般利用VBScript言语举行HTML文件的嵌进式剧本计划,文件名后缀是.asp。它的道理如所示。
当扫瞄器向WebServer收回.asp哀求时,WebServer入手下手运转ASP剧本程序,然后WebServer启动ASP,ASP将所哀求的文件从头至尾举行反省,实行文件中的嵌进的ASP剧本,最初将实行了局HTML网页前往给WebServer。WebServer再将该HTML网页发送给客户端。如许,用户能够依据扫瞄器收回的哀求计划ASP剧本,从而由分歧的哀求发生分歧的剧本实行了局。ASP具有很多长处(如利用复杂,实行效力较初等),但它同时也具有其后天的缺点,即它利用的是剧本言语,功效无限,难以完成很多庞大的营业功效。微软为了填补这一缺点,供应了在ASP中利用ActiveX组件的功效,从而很多庞大的功效就能够用别的很多初级言语(如VisualC++)来完成,然后将这些功效包装为ActiveX,供ASP挪用。ADO(ActiveXDataObject)就是在ASP中经常使用的数据库会见组件。
WEB数据库材料体系完成的关头手艺
要完成基于WEB的数据库材料体系,关头要办理两个方面的成绩。第一要完成将客户端文件材料经由过程扫瞄器上载到WEB服务器,并将文件内容保留到数据库中;第二要完成从数据库中读取材料内容,并将内容发送到客户端扫瞄器。为申明怎样完成这两项手艺,我们用一个复杂的数据库举行示例(这里利用的数据库情况是MSSQLServer6.5),这个数据库只要一个表(UploadFile),其布局如所示。
个中,id字段是关头字,自增范例;Title暗示材料题目;FileName是上载的材料文件名;Content字段怎样寄存二进制材料文件内容。上面将报告完成将客户端文件材料经由过程扫瞄器上载到WEB服务器,并将文件内容保留到数据库中和怎样从数据库中读取材料内容,并将内容发送到客户端扫瞄器。WEB服务器平台是WindowsNTServer4.0+IIS4.0+SQLServer6.5,客户端利用IE4.0,体系调试经由过程。
利用ASP完成文件上载到WEB服务器
基于Web体例上载文件,要服从RFC1867尺度(IE3.0和Netscape3.0以上版本扫瞄器都撑持)。但IIS没有供应这方面的撑持。因而要利用ASP完成文件上载,必需挪用响应的ActiveX组件,这个ActiveX组件ASP自己没有供应,能够本人开辟(依据RFC1867尺度),也能够利用第三方供应的组件。这里先容的办法利用第三方的组件ASPUpload.dll,在利用前必需先在WEB服务器上注册(将ASPUpload.dll拷贝到winntsystem32目次下,然后云运转“regsvr32aspupload.dll”)。
个中客户端源文件以下(uploadTest.htm):
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>文件上载客户端</title>
</head>
<body>
<formmethod="POST"action="uploadTest1.asp"enctype="multipart/form-data"
name="UPloadForm">
<p><inputtype="file"Name="File1"> </p>
<p><inputtype="submit"value="Submit"name="Upload"></p>
</form>
</body>
</html>
个中客户端文件要注重两点:
*文件上载提交表单(Form)的enctype必需指定为“multipart/form-data”
*语句<inputtype="file"Name="File1">暗示上载文件域,用户能够在该域中输出或选定文件。
服务器端源文件以下(uploadTest1.asp):
<%response.buffer=true%>
<html>
<%SetUpload=Server.createobject("Persits.Upload.1")创立文件上载组件
Count=Upload.Save("e:aspupload")将客户端文件保留到WEB服务器真个当地硬盘上%>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>UploadTest</title>
<metaname="GENERATOR"content="MicrosoftFrontPage3.0">
</head>
<body>
<p>上载了<%=Count%>个文件</p>
<p>Filehasbeenuploaded.</p>
</body>
</html>
个中,剧本SetUpload=Server.createobject("Persits.Upload.1")创立了文件上载组件,该组件经由过程挪用Save办法将扫瞄器真个文件内容保留到指定路径。
将文件存在数据库中
将文件保留在数据库中次要用了ASPUpLoad组件中文件工具的ToDatabase办法。源文件以下:
客户端源文件(uploadToDB.htm):
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>文件上载客户端</title>
</head>
<body>
<formmethod="POST"action="UploadToDB.asp"enctype="multipart/form-data"
name="FormUpload">
<p><inputtype="file"name="FileUpload"></p>
<p><inputtype="submit"value="上载"name="B1"></p>
</form>
<p><ahref="readFile.asp">读取数据库中文件</a></p>
</body>
</html>
服务器端源文件(uploadToDB.asp):
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>文件上载到数据库</title>
</head>
<body>
<%SetUpload=Server.createobject("Persits.Upload.1")
Count=Upload.Save("e:aspupload")
onerrorresumenext
setFileObj=Upload.Files("FileUpload")
SQL="insertintoupLoadFile(Title,FileName,Content)values("&FileObj.Path&","&FileObj.Path&",?)"
response.writeSQL
FileObj.ToDatabase"DSN=FileUpload;UID=sa;",SQL
ifErr0then
Response.write"ErrorSavingthefile:"&Err.Description
else
FileObj.delete
response.write"Success!"
endif
%>
</body>
</html>
从数据库中读取文件内容并发送给客户端扫瞄器
从数据库中读取内容在发送给扫瞄器之前,起首必需让扫瞄器晓得内容的数据范例,这经由过程向客户端发送ContentType形貌完成。为复杂起见,这里假定发送的内容是Word文档,而且显现最新拔出的纪录。源文件以下:
客户端源文件为uploadToDB.htm(同上一部分的客户端文件)。
服务器端源文件(readFile.asp):
<%Response.Expires=0
response.buffer=true%>
<%response.clear
Response.ContentType="application/msword"
setconn=server.createobject("adodb.connection")
conn.open"DSN=FileUpload;UID=sa;"
setrs1=conn.execute("selectmaxid=max(id)fromuploadFile")
SQL="select*fromuploadFilewhereid="&rs1("maxid")
setrs=conn.execute(SQL)
Response.BinaryWriters("Content")
rs.close
rs1.close
conn.close
Response.End
%>
个中,WebServer向客户端发送Content-Type="application/msword",使客户端以为这是Word文档,然后服务器从数据库中读取文件内容(为复杂起见,假定是数据库中最初一笔记录),然后以二进制流的体例向客户端发送(挪用ASP内置工具Response的BinaryWrite办法)。当客户端吸收到这些内容后便主动启动WordOLE服务,使Word控件嵌在扫瞄器IE中将收到的内容格局化显现。
总结
综上,经由过程利用ASP剧本和文件上载组件及ADO组件,能够便利地完成WEB数据库材料体系的关头手艺。有了上述手艺,关于基于WEB的数据库材料的复杂体系即可以很简单地失掉扩大和完成。笔者以上述手艺为中心开辟了一套Internet上的数据库档案材料办理体系,体系十分不乱牢靠(很年夜一部分要回功于aspUpload组件的不乱性),档案内容包括html、word、excel、文本、图象等各类格局,档案材料的办理、保护和检索非常便利,遭到用户的分歧好评。
优点:简单易学、开发速度快、有很多年“历史”,能找到非常多别人做好的程序来用、配合activeX功能强大,很多php做不到的asp+activeX能做到,例如银行安全控件 |
|