使用ASP實現基於WEB的資料庫資料系統

來源:互聯網
上載者:User
web|資料|資料庫


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、文本、映像等各種格式,檔案資料的管理、維護和檢索十分方便,受到使用者的一致好評。




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。