明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

用ASP技術完成在WEB頁面上瀏覽目錄及文件

[摘要]目前在許多單位里,象WORD、EXCEL或WPS該類文檔文件已成為重要的數據信息資源,在INTRANET WEB平臺上如何高效率地管理這些信息資源是一個需要解決的問題。本文是利用ASP技術開發(fā)一個基于WEB的應用程序,實現在WEB頁面上瀏覽目錄文件,很輕易地做到諸如WORD、EXCEL和WPS等文...

目前在許多單位里,象WORD、EXCEL或WPS該類文檔文件已成為重要的數據信息資源,在INTRANET WEB平臺上如何高效率地管理這些信息資源是一個需要解決的問題。本文是利用ASP技術開發(fā)一個基于WEB的應用程序,實現在WEB頁面上瀏覽目錄文件,很輕易地做到諸如WORD、EXCEL和WPS等文檔文件的查閱和下載,大大地減少信息維護的工作量。
關鍵詞  ASP  WEB  文檔文件
  
前言:在INTRANET平臺上,客戶用WEB瀏覽器從服務器下載過來的信息是以HTML標記構成的頁面,也就是平常所說的網頁,頁面一般分為兩類,一類是簡單的靜止不變的頁面,包括文字、表格和靜態(tài)圖像等信息,這種頁面可通過編寫HTML標記組成的文本文件或采用頁面制作工具如FRONTPAGE軟件來實現;另一類是動態(tài)的具有交互性和智能化的頁面,這類頁面實現起來比較復雜,需要將HTML標記、ACTIVEX控件及基于客戶端和服務端的腳本語言(如VBScript、JAVAScript)組合在一起構成WEB應用程序,WEB 程序經過服務端和客戶機運行處理才得到頁面。制作頁面雖然有專用的頁面制作工具來做,但是,要完成頁面制作需掌握一定的專業(yè)知識,如HTML標記語言,如果要制作動態(tài)的有交互功能的頁面,要求就更高了,需要專業(yè)人員才能做到。但是,目前在許多企事業(yè)單位中,數據信息的表示形式許多是文檔文件,如WORD、EXCEL、WPS和TXT等文檔,這些文檔文件已成為重要的數據信息資源,各部門之間的數據共享也是通過查詢和拷貝彼此的文檔文件來實現的。如果文檔文件不作任何轉換,就能在WEB瀏覽器中被查詢和下載,那么信息處理的效率將會提高,大大地減少信息維護的工作量。
本文是運用ASP技術實現在WEB頁面瀏覽文件夾及文件,通過超連接功能查看相關的ACTIVEX文檔信息,其功能類似于FTP服務,但比FTP服務性能更好,一、界面更友好,同WEB頁面無縫地連接;二、容易控制,安全性好,可以做到該需要查看的文檔才顯示在頁面上,不該看的文檔不顯示。
二、ASP技術及其對象
從IIS3.0開始,MICROSOFT推出了ACTIVE SERVER PAGES,既ASP技術,ASP能將HTML頁面、腳本語言(VBScript、JAVAScript)和ACTIVEX控件有機地組合起來,創(chuàng)建具有動態(tài)的、交互式的、高效率的頁面和基于WEB數據庫的功能強大的服務器應用程序。
ASP還有一個特點是其擁有功能強大的內置對象,對象之中又有很多的方法和屬性。在用ASP開發(fā)WEB應用程序時,能夠調用其對象及其方法,不但能提高編程效率,而且程序編碼更優(yōu)化。
1、ASP包括了六個內置對象:
   Request  對象    是從客戶端取得信息
   Response 對象    將信息送給客戶端
   Session  對象     存儲在一個Session內的用戶信息
   Application對象   在一個ASP-Application內讓不同的客戶端共享信息
   Server   對象     提供一些服務端使用的方法。在本文的ASP程序中運用了該對象的      幾個方法,在后面將對其作具體地說明。
   Objectcontext對象  可以配合Microsoft Transaction Server進行分布式事務處理
2、Server對象的重要方法
   Createobject方法    Createobject方法用于創(chuàng)建已注冊到服務器上的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等軟件。