目前在許多單位里,象WORD、EXCEL或WPS該類文檔文件已成為重要的數據信息資源,在INTRANET WEB平臺上如何高效率地管理這些信息資源是一個需要解決的問題。本文是利用ASP技術開發一個基于WEB的應用程序,實現在WEB頁面上瀏覽目錄文件,很輕易地做到諸如WORD、EXCEL和WPS等文檔文件的查閱和下載,大大地減少信息維護的工作量。 關鍵詞 ASP WEB 文檔文件 前言:在INTRANET平臺上,客戶用WEB瀏覽器從服務器下載過來的信息是以HTML標記構成的頁面,也就是平常所說的網頁,頁面一般分為兩類,一類是簡單的靜止不變的頁面,包括文字、表格和靜態圖像等信息,這種頁面可通過編寫HTML標記組成的文本文件或采用頁面制作工具如FRONTPAGE軟件來實現;另一類是動態的具有交互性和智能化的頁面,這類頁面實現起來比較復雜,需要將HTML標記、ACTIVEX控件及基于客戶端和服務端的腳本語言(如VBScript、JAVAScript)組合在一起構成WEB應用程序,WEB 程序經過服務端和客戶機運行處理才得到頁面。制作頁面雖然有專用的頁面制作工具來做,但是,要完成頁面制作需掌握一定的專業知識,如HTML標記語言,如果要制作動態的有交互功能的頁面,要求就更高了,需要專業人員才能做到。但是,目前在許多企事業單位中,數據信息的表示形式許多是文檔文件,如WORD、EXCEL、WPS和TXT等文檔,這些文檔文件已成為重要的數據信息資源,各部門之間的數據共享也是通過查詢和拷貝彼此的文檔文件來實現的。如果文檔文件不作任何轉換,就能在WEB瀏覽器中被查詢和下載,那么信息處理的效率將會提高,大大地減少信息維護的工作量。 本文是運用ASP技術實現在WEB頁面瀏覽文件夾及文件,通過超連接功能查看相關的ACTIVEX文檔信息,其功能類似于FTP服務,但比FTP服務性能更好,一、界面更友好,同WEB頁面無縫地連接;二、容易控制,安全性好,可以做到該需要查看的文檔才顯示在頁面上,不該看的文檔不顯示。 二、ASP技術及其對象 從IIS3.0開始,MICROSOFT推出了ACTIVE SERVER PAGES,既ASP技術,ASP能將HTML頁面、腳本語言(VBScript、JAVAScript)和ACTIVEX控件有機地組合起來,創建具有動態的、交互式的、高效率的頁面和基于WEB數據庫的功能強大的服務器應用程序。 ASP還有一個特點是其擁有功能強大的內置對象,對象之中又有很多的方法和屬性。在用ASP開發WEB應用程序時,能夠調用其對象及其方法,不但能提高編程效率,而且程序編碼更優化。 1、ASP包括了六個內置對象: Request 對象 是從客戶端取得信息 Response 對象 將信息送給客戶端 Session 對象 存儲在一個Session內的用戶信息 Application對象 在一個ASP-Application內讓不同的客戶端共享信息 Server 對象 提供一些服務端使用的方法。在本文的ASP程序中運用了該對象的 幾個方法,在后面將對其作具體地說明。 Objectcontext對象 可以配合Microsoft Transaction Server進行分布式事務處理 2、Server對象的重要方法 Createobject方法 Createobject方法用于創建已注冊到服務器上的ACTIVEX組件變量實例。比如在ASP程序中想要瀏覽文件夾及文件,必須先用Createobject方法建立FileSystemObject對象的變量實例fs,然后調用對象變量fs的方法以獲取文件夾(folder)及文件(file),下面是獲取文件夾為 /dcw 的Folder對象的ASP代碼: ‘先建立FileSystemObject set fs=server.Createobject(“scripting.FileSystemobject”) ‘獲取 /dcw文件夾的實際路徑 Fullpath=Server.mapPath(“/dcw”) ‘建立 /dcw文件夾所對應的 Folder對象 set fd=fs.getFolder(fullpath)
MapPath方法 轉換Web Server 虛擬路徑為服務器端實際路徑。如在IIS Web服務器上假設有一實際路徑為C:\財務部,在建立Web 虛擬路徑時取名為 dcw,書寫格式為 /dcw,事實上 Server.MapPath(“/dcw”)就是它的實際路徑 C:\財務部。一般地,在 Web應用中瀏覽網頁時使用的網址就是虛擬路徑,在文件存取過程中使用的是實際路徑,如前面提到的 set fd=fs.getfolder(fullpath)語句里,fullpath就表示為實際路徑 URLEncode 方法根據URL編碼原則,將URL 中的特殊字符編碼為字符串 HtmlEncode方法使用Htmlencode方法編碼為 ASCII形式的Html文件 三、實現過程 客戶端向服務端傳送請求信息 客戶向服務端傳送的請求信息是一個ASP文件Listf.asp和三個參數in_folder,out_file,prompt。 In_folder表示為要瀏覽的文件夾 Out_file 表示退出返回到的頁面 Prompt 表示在列出文件夾的頁面上的提示信息 以瀏覽 “C:\財務部”文件夾信息為例,其WEB虛擬目錄為“/dcw”,程序退出返回到主頁,主頁的虛擬路徑可表示為“/”,提示信息為“財務數據信息”。在 Web 程序中加入下面一條語句就可以查看“c:\財務部”文件夾下的所有子文件夾及文件。 <a Href=listf.asp?in_folder=/dcw&out_file=/&prompt=財務數據信息>財務文件信息</a> ‘文件開始 <HTML><BODY bgcolor=”#c0c0c0”> <% ‘2、獲取參數信息 Folder=Request(“Folder”) If Folder=”” Then In_folder=request(“in_folder”) Out_file=request(“out_file”) Prompt=request(“prompt”) If in_folder<>”” and out_file<>’’ then Session(“in_folder”)=in_folder Session(“out_file”)=out_file Session(“prompt”)=prompt End if Folder=session(“in_folder”) Prompt=session(“prompt”) ‘ 輸出文件夾名和提示信息 response.write “<H2 align=””” & “center” & “””>” & prompt & “系列文件目錄<HR></H2>” else subfolder=folder folder=session(“in_folder”) & folder ‘輸出文件夾名和提示信息 response.write “<H2 align=””” & “center” & “””>” & mid(ucase(replace(subfolder,”/”,”_”)),2) & “<HR></H2>” end if AspPath=Request.serverVariables(“PATH_INFO”) ‘3、建立文件夾對象變量實例 fd set fs= Server.createObject(“Scripting.filesystemobject”) set fd= fs.getfolder(Server.MapPath(folder)) ‘4、構造超連接函數 ‘函數UnMapPath是將實際路徑轉換為虛擬路徑 Function Unmappath(path) UnMapPath=Replace(mid(path,len(server.MapPath(“in_folder”)))+1),”\”,”/”) End Function ‘函數MakefolderHREF 構造文件夾超連接 Function MakefolderHREF(AspPath,path) URLPath=ServerEncode(UnMapPath(path)) MakefolderHREF=”<A HREF=””” & AspPath & “?folder=” & URLPath & “””>” End Function ‘函數MakefileHREF 構造文件超連接 Function makefileHREF(path) MakefileHREF=”<A HREF=””” & session(“in_folder”) & Server.htmlencode(unmappath(Path)) & “””>” End Function ‘5、返回到上一層文件夾或退出到主頁 If folder<session(“in_folder”) then ‘有上一層文件夾 HREF_Path=MakefolderHREF(AspPath,fd.parentfolder.path) Response.write HREF_path & “[上一層文件夾]</A><BR>” Else Response.write “<A HREF=””” & session(“out_file”) & “””>返回主頁</A><br>” End if ‘6、列出文件夾和文件 ‘ 列出文件夾,文件夾為temp不顯示出來 Response.write “<table width=600 align=center border=1>” Ii=1 For Each sfd in fd.subfolders ‘獲取 fd 中的各個子文件夾subfolder If sfd.name<>”temp” then If ii=1 then Response.write “<tr><td>” HREF=”img src=http://www.okasp.com/techinfo/folder.gif align=texttop>” HREF=HREF &MakefolderHREF(AspPath,sfd.path) Response.write HREF & sfd.name & “</A><BR>” Response.write “</td>” Ii=ii+1 else Response.write “<td>” HREF=”img src=http://www.okasp.com/techinfo/folder.gif align=texttop>” HREF=HREF &MakefolderHREF(AspPath,sfd.path) Response.write HREF & sfd.name & “</A><BR>” Response.write “</td></tr>” Ii=1 End if End if Next If ii=2 then Response.write “<td> </td></tr>” End if Response.write “</table> ‘以下為輸出文件,擴展名為doc、xls、wps和txt的文檔才顯示出來,但擴展名不列出 Response.write”<center><hr>以下為文件</center><br><p>” Response.write”<table width=600 align=center border=1>” Ii=1 For Each f in fd.Files Pos=instrrec(f.path,”.”) If pos>0 then Ext=mid(f.path,pos+1) Else Ext=”” End if If Lase(ext)=”doc” or lcase(ext)=”xls” or lcase(ext)=”wps” or lcase(ext)=”txt” then Pos=instrrec(f.name,”.”) If pos>0 then Noext_file=left(f.name,pos-1) End if If ii=1 then Response.write “<tr><td>” HREF=”<img src=http://www.okasp.com/techinfo/file.gif align=texttop>” & MakefileHREF(f.path) Response.Write HREF & noext_file & “</A><BR>” Response.Write “</td>” Ii=ii+1 Else Response.write “<td>” HREF=”<img src=http://www.okasp.com/techinfo/file.gif align=texttop>” & MakefileHREF(f.path) Response.Write HREF & noext_file & “</A><BR>” Response.Write “</td></tr>” Ii=1 End if End if Next If ii=2 then Response.write “</td></tr>” End if Response.write “</table><BR>” %> </BODY></HTML> ‘文件結束 四、結論 本文的應用程序在WINDOW NT4.0,IIS4.0和IE4所構成的INTRANET WEB平臺上運行,既可以單獨調用,又可以嵌入到其它的WEB程序或HTML頁面中,使用WEB瀏覽器很方便地查看到文件目錄信息,并可以下載文件。但要注意的是,該程序適合于局域網下使用,對于遠程調用不太合適,另外,還要求客戶端安裝了OFFICE、WPS97等軟件。
|