建立目錄瀏覽使用 ASP 網頁

我們強烈建議所有的使用者升級到 Microsoft Internet Information Services (IIS) 7.0 版,以在 Microsoft Windows Server 2008 上執行。 IIS 7.0 能夠大幅提升網頁基礎結構的安全性。如需有關 IIS 安全性相關的主題的詳細資訊,請造訪下列 Microsoft 網站:

如需有關 IIS 7.0 的詳細資訊,請造訪下列 Microsoft 網站:

摘要

Microsoft IIS 提供透過瀏覽目錄存取控制設定,可以在資料夾或 Web 層級設定的檔案和資料夾清單。使用檔案系統物件的動態伺服器網頁 (ASP),您可以建立網頁像而不需啟用目錄瀏覽的存取權,並允許更高的層級自訂與個人化的瀏覽目錄的該函式。

其他相關資訊

將儲存下列 ASP 程式碼為"Default.asp"(不含引號) 需要目錄清單的資料夾中:警告: 任何使用由您的程式碼提供在此文件是您自己危險。Microsoft 會提供 「 現狀 」 這段程式碼,不附帶任何擔保,明示或暗示,包括但不是限於適售性以及適合某特定用途之默示擔保責任。

<%@LANGUAGE="VBSCRIPT"%><%   Option Explicit   On Error Resume Next   ' this section is optional - it just denies anonymous access   If Request.ServerVariables("LOGON_USER")="" Then      Response.Status = "401 Access Denied"   End If   ' declare variables   Dim objFSO, objFolder   Dim objCollection, objItem   Dim strPhysicalPath, strTitle, strServerName   Dim strPath, strTemp   Dim strName, strFile, strExt, strAttr   Dim intSizeB, intSizeK, intAttr, dtmDate   ' declare constants   Const vbReadOnly = 1   Const vbHidden = 2   Const vbSystem = 4   Const vbVolume = 8   Const vbDirectory = 16   Const vbArchive = 32   Const vbAlias = 64   Const vbCompressed = 128   ' don't cache the page   Response.AddHeader "Pragma", "No-Cache"   Response.CacheControl = "Private"   ' get the current folder URL path   strTemp = Mid(Request.ServerVariables("URL"),2)   strPath = ""   Do While Instr(strTemp,"/")      strPath = strPath & Left(strTemp,Instr(strTemp,"/"))      strTemp = Mid(strTemp,Instr(strTemp,"/")+1)         Loop   strPath = "/" & strPath   ' build the page title   strServerName = UCase(Request.ServerVariables("SERVER_NAME"))   strTitle = "Contents of the " & strPath & " folder"   ' create the file system objects   strPhysicalPath = Server.MapPath(strPath)   Set objFSO = Server.CreateObject("Scripting.FileSystemObject")   Set objFolder = objFSO.GetFolder(strPhysicalPath)%><html><head><title><%=strServerName%> - <%=strTitle%></title><meta name="GENERATOR" content="The Mighty Hand of Bob"><style>BODY  { BACKGROUND: #cccccc; COLOR: #000000;        FONT-FAMILY: Arial; FONT-SIZE: 10pt; }TABLE { BACKGROUND: #000000; COLOR: #ffffff; }TH    { BACKGROUND: #0000ff; COLOR: #ffffff; }TD    { BACKGROUND: #ffffff; COLOR: #000000; }TT    { FONT-FAMILY: Courier; FONT-SIZE: 11pt; }</style></head><body><h1 align="center"><%=strServerName%><br><%=strTitle%></h1><h4 align="center">Please choose a file/folder to view.</h4><div align="center"><center><table width="100%" border="0" cellspacing="1" cellpadding="2"><tr>   <th align="left">Name</th>   <th align="left">Bytes</th>   <th align="left">KB</th>   <th align="left">Attributes</th>   <th align="left">Ext</th>   <th align="left">Type</th>   <th align="left">Date</th>   <th align="left">Time</th></tr><%   ''''''''''''''''''''''''''''''''''''''''   ' output the folder list   ''''''''''''''''''''''''''''''''''''''''   Set objCollection = objFolder.SubFolders   For Each objItem in objCollection      strName = objItem.Name      strAttr = MakeAttr(objItem.Attributes)            dtmDate = CDate(objItem.DateLastModified)%><tr>   <td align="left"><b><a href="<%=strName%>"><%=strName%></a></b></td>   <td align="right">N/A</td>   <td align="right">N/A</td>   <td align="left"><tt><%=strAttr%></tt></td>   <td align="left"><b><DIR></b></td>   <td align="left"><b>Directory</b></td>   <td align="left"><%=FormatDateTime(dtmDate,vbShortDate)%></td>   <td align="left"><%=FormatDateTime(dtmDate,vbLongTime)%></td></tr><% Next %><%   ''''''''''''''''''''''''''''''''''''''''   ' output the file list   ''''''''''''''''''''''''''''''''''''''''   Set objCollection = objFolder.Files   For Each objItem in objCollection      strName = objItem.Name      strFile = Server.HTMLEncode(Lcase(strName))      intSizeB = objItem.Size      intSizeK = Int((intSizeB/1024) + .5)      If intSizeK = 0 Then intSizeK = 1      strAttr = MakeAttr(objItem.Attributes)      strName = Ucase(objItem.ShortName)      If Instr(strName,".") Then strExt = Right(strName,Len(strName)-Instr(strName,".")) Else strExt = ""      dtmDate = CDate(objItem.DateLastModified)%><tr>   <td align="left"><a href="<%=strFile%>"><%=strFile%></a></td>   <td align="right"><%=FormatNumber(intSizeB,0)%></td>   <td align="right"><%=intSizeK%>K</td>   <td align="left"><tt><%=strAttr%></tt></td>   <td align="left"><%=strExt%></td>   <td align="left"><%=objItem.Type%></td>   <td align="left"><%=FormatDateTime(dtmDate,vbShortDate)%></td>   <td align="left"><%=FormatDateTime(dtmDate,vbLongTime)%></td></tr><% Next %></table></center></div></body></html><%   Set objFSO = Nothing   Set objFolder = Nothing   ' this adds the IIf() function to VBScript   Function IIf(i,j,k)      If i Then IIf = j Else IIf = k   End Function   ' this function creates a string from the file atttributes   Function MakeAttr(intAttr)      MakeAttr = MakeAttr & IIf(intAttr And vbArchive,"A","-")      MakeAttr = MakeAttr & IIf(intAttr And vbSystem,"S","-")      MakeAttr = MakeAttr & IIf(intAttr And vbHidden,"H","-")      MakeAttr = MakeAttr & IIf(intAttr And vbReadOnly,"R","-")   End Function%>

因為此頁面函式來取代目錄瀏覽存取,您應該停用目錄瀏覽儲存此頁面的任何資料夾。若要這樣做,請使用下列方法。

方法 1: Windows NT Server 4.0

  1. 按一下 [開始],按一下 [執行]、 輸入Inetmgr,然後按一下[確定]

  2. 按兩下正在執行 WWW 服務的伺服器。

  3. 按一下 [目錄] 索引標籤,按一下您想要,,然後按一下以清除 [允許目錄瀏覽] 核取方塊的資料夾。

  4. 按一下 [確定]

方法 2: Windows 2000 Server

  1. 按一下 [開始],按一下 [執行]、 輸入Inetmgr,然後按一下[確定]

  2. 按兩下您想要的伺服器。如果需要,請展開想要的話,Web 站台。

  3. 以滑鼠右鍵按一下網站或虛擬目錄,,,然後按一下 [屬性

  4. 按一下 [主目錄] 索引標籤,然後按一下以清除目錄瀏覽] 核取方塊。注意[主目錄] 索引標籤,可能會顯示為 [目錄] 索引標籤或 [虛擬目錄] 索引標籤。

  5. 按一下 [確定]

如需有關 Microsoft 指令碼語言的詳細資訊,請檢視下列 Microsoft 網站:

需要更多協助?

擴展您的技能
探索訓練
優先取得新功能
加入 Microsoft 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與我們的其中一個 Office 支援專員連絡以深入了解您的意見。

×