明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

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

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

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

MapPath方法   轉(zhuǎn)換Web Server 虛擬路徑為服務(wù)器端實(shí)際路徑。如在IIS Web服務(wù)器上假設(shè)有一實(shí)際路徑為C:\財(cái)務(wù)部,在建立Web 虛擬路徑時(shí)取名為 dcw,書寫格式為 /dcw,事實(shí)上 Server.MapPath(“/dcw”)就是它的實(shí)際路徑 C:\財(cái)務(wù)部。一般地,在 Web應(yīng)用中瀏覽網(wǎng)頁時(shí)使用的網(wǎng)址就是虛擬路徑,在文件存取過程中使用的是實(shí)際路徑,如前面提到的 set fd=fs.getfolder(fullpath)語句里,fullpath就表示為實(shí)際路徑
URLEncode 方法根據(jù)URL編碼原則,將URL 中的特殊字符編碼為字符串
HtmlEncode方法使用Htmlencode方法編碼為 ASCII形式的Html文件
  
三、實(shí)現(xiàn)過程
客戶端向服務(wù)端傳送請(qǐng)求信息
   客戶向服務(wù)端傳送的請(qǐng)求信息是一個(gè)ASP文件Listf.asp和三個(gè)參數(shù)in_folder,out_file,prompt。
In_folder表示為要瀏覽的文件夾
Out_file   表示退出返回到的頁面
Prompt    表示在列出文件夾的頁面上的提示信息
以瀏覽 “C:\財(cái)務(wù)部”文件夾信息為例,其WEB虛擬目錄為“/dcw”,程序退出返回到主頁,主頁的虛擬路徑可表示為“/”,提示信息為“財(cái)務(wù)數(shù)據(jù)信息”。在 Web 程序中加入下面一條語句就可以查看“c:\財(cái)務(wù)部”文件夾下的所有子文件夾及文件。
<a Href=listf.asp?in_folder=/dcw&out_file=/&prompt=財(cái)務(wù)數(shù)據(jù)信息>財(cái)務(wù)文件信息</a>
‘文件開始
<HTML><BODY bgcolor=”#c0c0c0”>
<%
  
‘2、獲取參數(shù)信息
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、建立文件夾對(duì)象變量實(shí)例 fd
set  fs= Server.createObject(“Scripting.filesystemobject”)
set  fd= fs.getfolder(Server.MapPath(folder))
‘4、構(gòu)造超連接函數(shù)
‘函數(shù)UnMapPath是將實(shí)際路徑轉(zhuǎn)換為虛擬路徑
Function Unmappath(path)
       UnMapPath=Replace(mid(path,len(server.MapPath(“in_folder”)))+1),”\”,”/”)
End Function
‘函數(shù)MakefolderHREF 構(gòu)造文件夾超連接
Function MakefolderHREF(AspPath,path)
   URLPath=ServerEncode(UnMapPath(path))
   MakefolderHREF=”<A HREF=””” & AspPath & “?folder=” & URLPath & “””>”
End Function
‘函數(shù)MakefileHREF 構(gòu)造文件超連接   
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 中的各個(gè)子文件夾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>
‘以下為輸出文件,擴(kuò)展名為doc、xls、wps和txt的文檔才顯示出來,但擴(kuò)展名不列出
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> ‘文件結(jié)束
四、結(jié)論
       本文的應(yīng)用程序在WINDOW NT4.0,IIS4.0和IE4所構(gòu)成的INTRANET WEB平臺(tái)上運(yùn)行,既可以單獨(dú)調(diào)用,又可以嵌入到其它的WEB程序或HTML頁面中,使用WEB瀏覽器很方便地查看到文件目錄信息,并可以下載文件。但要注意的是,該程序適合于局域網(wǎng)下使用,對(duì)于遠(yuǎn)程調(diào)用不太合適,另外,還要求客戶端安裝了OFFICE、WPS97等軟件。