Directory Viewer

This is a directory viewer. You can set what files to be viewed.
Has ByteConversion() and IsValidFile()

CodeFunctionName
What is this?

Public

Not Tested

Original Work
<%@ Language=VBScript % >
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<%
' <!-- Copyright © 2000 Fares Rihani. All rights reserved.-- >
' <!------ http://www.rihani.com --- fares@rihani.com ------ >

' ***** Create a dynamic navigation system to allow users to successfully
' navigate, view, and read files placed in a directory on the web server.
' This directory may contain any number of files of any file type as well
' as any number of subfolders.
' Upload this file into the same folder as the folder to be shared, and
' specify the folder's name in the variable 'sDirectory' below.

' ***** Which Folder to Share?
' ********** ********** **********
sDirectory = "Source"
' ********** ********** **********

' ***** Other configurable options
' Which file extensions to allow separated by commas ie: "," Set to "" or "all" to allow all extensions
' note: Unless proper permissions are set, files that are not allowed will still be viewable if a user
' inputs the exact web location of the file. The method used here will only remove the link to the file.
AllowExt = "gif, asp, jpg, jpeg, htm, ico, txt, ini"
'AllowExt = "all"
' DenyExt overrides AllowExt
DenyExt = "doc"


' Top navigation separator
Const sChevron = ">" ' "/"

' Always display the navigation path?
Const bShowPath = True 'False
' Always display the root directory?
Const bShowRoot = False 'True

' Page font tag
Const sFont = " <font face=""Verdana, Arial, Helvetica"" size=""2"" >"
' Column header font tag
Const sColFont = " <font face=""Verdana, Arial, Helvetica"" size=""2"" COLOR=""#FFFFFF"" >"
' Column header color
Const TblHeader = "#BFBFBF" 'Grey

' Directory grid alternating colors
Const FileRow1 = "#b6cbeb" 'Dark Blue
Const FileRow2 = "#cadfff" 'Light Blue
Const FolderRow1 = "#879966" 'Dark Green
Const FolderRow2 = "#c5e095" 'Light Green

' Some nice color pairs
'#91619b 'Dark Purple
'#be9cc5 'Light Purple
'#b6cbeb 'Dark Blue
'#cadfff 'Light Blue
'#879966 'Dark Green
'#c5e095 'Light Green
'#a7342a 'Dark Red
'#df867f 'Light Red
'#f8bc03 'Dark Yellow
'#f8e094 'Light Yellow



' ***** Begin Script
Dim sError
On Error Resume Next
sDirectory = trim(sDirectory)
If right(sDirectory,1) < > "/" Then sDirectory = sDirectory & "/"

' ***** Get subfolder from passed querystring
sDir = sDirectory & Request.querystring("dir")
sDir = trim(sDir)
If right(sDir,1) < > "/" Then sDir = sDir & "/"

' ***** Important! Make sure the subfolder path is in the shared folder. This keeps
' users from browsing directories outside of the shared. ie: dir=../
' You may want to include some logging code if this happens, here we just
' put the user back into the default directory.
sFolder = Server.MapPath( sDir )
sDirFolder = Server.MapPath( sDirectory )
sSubFolder = right(sDir,len(sDir)-len(sDirectory))
If instr( sFolder , sDirFolder ) = 0 Then
sFolder = sDirFolder
sSubFolder = ""
sError = sError & " Path not authorized;"
End If


' ***** Load the file system and navigate to our shared folder.
Set objFileObject = Server.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFileObject.GetFolder( sFolder )

' ***** Oops, missing or misspelled folder path.
If IsEmpty( objFolder ) Then
sFolder = sDirFolder
sSubFolder = ""
sDir = sDirectory
Set objFolder = objFileObject.GetFolder( sFolder )
sError = sError & " Folder not found;"
End If

% >
<HTML > <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#000000" VLINK="#000000" >

<font face="Verdana, Arial, Helvetica" size="2" >
<BR > <B >Welcome to my file archive: </B > <BR > <BR > </font >


<TABLE BORDER=0 bgcolor="#f0f0f0" CELLPADDING=0 CELLSPACING=1 >
<% ' ***** Feel free to edit the above table tag

' ***** Build path navigation
aNames = Split( sSubFolder , "/")
If bShowPath Then
If UBound( aNames ) > 0 Or bShowRoot Then % >
<TR BGCOLOR="#ffffff" >
<TD > <%= sFont % >  </font > </TD >
<TD COLSPAN="4" > <%= sFont % >
<B >  <A HREF=" <%= Request.ServerVariables("SCRIPT_NAME") % >" > <%= Left(sDirectory,len(sDirectory)-1) % > </A > </B >
<% End If

For count = 0 to UBound( aNames ) -1
aURL = aURL & aNames(count) & "/"
% >  <%= sChevron % >  <B > <A HREF=" <%= Request.ServerVariables("SCRIPT_NAME") % >?dir= <%= Server.URLEncode( aURL ) % >" > <%= aNames(count) % > </A > </B > <%
Next % > </font > </TD > </TR > <%
End If

For count = 0 to UBound( aNames ) -2
aDirUp = aDirUp & aNames(count) & "/"
Next % >

<TR BGCOLOR=" <%= TblHeader % >" >
<TD BGCOLOR="#ffffff" > <A HREF=" <%= Request.ServerVariables("SCRIPT_NAME") % >?dir= <%= Server.URLEncode( aDirUp ) % >" > <font face="Wingdings" COLOR=" <%= TblHeader % >" >Ç </font > </a > </TD >
<TD > <%= sColFont % >  <B >Filename: </B >   </FONT > </TD >
<TD > <%= sColFont % >  <B >Size: </B >   </FONT > </TD >
<TD > <%= sColFont % >  <B >File type: </B >   </FONT > </TD >
<TD > <%= sColFont % >  <B >Date created: </B >   </FONT > </TD >
<%
' ***** Iterate through the subfolders in our shared folder.
For Each objFile In objFolder.SubFolders

' ***** Alternate between these two row colors.
If iAlternate = 0 Then
response.write " <TR BGCOLOR=""" & FolderRow1 & """ >"
iAlternate = 1
Else
response.write " <TR BGCOLOR=""" & FolderRow2 & """ >"
iAlternate = 0
End If

' ***** Display folder with link to navigate
% > <TD align="center" BGCOLOR=" <%= TblHeader % >" > <font face="Wingdings" COLOR="#ffffff" >0 </font > </TD >
<TD > <%= sFont % >  <A HREF=" <%= Request.ServerVariables("SCRIPT_NAME") % >?dir= <%= Server.URLEncode( sSubFolder & objFile.Name )% >" > <%= objFile.Name % > </A >   </font > </TD >
<TD align="right" > <%= sFont % >  <%= ByteConversion( objFile.Size ) % >   </font > </TD >
<TD > <%= sFont % >  <%= objFile.Type % >   </font > </TD >
<TD > <%= sFont % >  <%= objFile.DateCreated % >   </font > </TD >
</TR >
<%
' ***** Next Folder
NEXT

' ***** Iterate through the files in our shared folder / subfolder.
For Each objFile In objFolder.Files

sFileName = objFile.name

' ***** Only continue if it's a valid extension
If ( IsValidFile (sFileName) ) Then

' ***** Alternate between these two row colors.
' We'll use the same counter variable to continue alternating between
' the light / dark shade according to the previous folder row color.
If iAlternate = 0 Then
response.write " <TR BGCOLOR=""" & FileRow1 & """ >"
iAlternate = 1
Else
response.write " <TR BGCOLOR=""" & FileRow2 & """ >"
iAlternate = 0
End If
' ***** Display file with link to execute / dowload.
% > <TD align="center" BGCOLOR=" <%= TblHeader % >" > <font face="Wingdings" COLOR="#ffffff" > < </font > </TD >
<TD > <%= sFont % >  <A HREF=" <%= sDir % > <%= sFileName % >" > <%= sFileName % > </A >   </font > </TD >
<TD ALIGN=RIGHT > <%= sFont % >  <%= ByteConversion( objFile.Size ) % >   </font > </TD >
<TD > <%= sFont % >  <%= objFile.Type % >   </font > </TD >
<TD > <%= sFont % >  <%= objFile.DateCreated % >   </font > </TD >
</TR > <%
End If

' ***** Next File
NEXT

' ***** Clean up those nasty memory leaks
Set objFileObject = nothing
Set objFolder = nothing

' ***** Iterate through and approve extensions
Function IsValidFile(FileName)
If Not AllowExt < > "" or LCase( AllowExt ) = "all" Then
IsValidFile = True
Else
aAllowExt = Split( AllowExt & "," , ",")
IsValidFile = False
For iCnt = 0 to UBound( aAllowExt ) -1
If right( FileName , len( FileName ) - InStrRev( FileName , "." ) ) = Trim(aAllowExt( iCnt )) Then IsValidFile = True
Next
End If
If DenyExt < > "" Then
aDenyExt = Split( DenyExt & "," , ",")
For iCnt = 0 to UBound( aDenyExt ) -1
If right( FileName , len( FileName ) - InStrRev( FileName , "." ) ) = Trim(aDenyExt( iCnt )) Then IsValidFile = False
Next
End If
End Function

' ***** Display friendly byte size
Function ByteConversion(NumberOfBytes)
If NumberOfBytes < 1024 Then
sDisplayBytes = NumberOfBytes & " Bytes"
End If
If NumberOfBytes >= 1024 Then
sDisplayBytes = FormatNumber( NumberOfBytes / 1024, 2) & " KB"
End If
If NumberOfBytes > 1048576 Then
sDisplayBytes = FormatNumber( NumberOfBytes / 1048576, 2) & " MB"
End If
Response.Write sDisplayBytes
End Function

' ***** Did we encounter an Error?
If Err < > 0 or sError < > "" Then
response.write " <TR > <TD bgcolor=""#ffffff"" colspan=""5"" > <font face=""Verdana, Arial, Helvetica"" color=""red"" size=""1"" >ERROR: " & sError & space(1) & "ASP: " & Err.description & "; </font > </TD > </TR >"
End If


% >
<TR >
<TD align="right" bgcolor="#ffffff" colspan="5" > <a href="http://www.rihani.com" > <font face="Verdana, Arial, Helvetica" color="#BFBFBF" size="1" >© 2000 Rihani </font > </a > </TD >
</TR >
</TABLE >
</BODY > </HTML >

Views 3,751

Downloads 1,400

CodeID
DB ID

FaresRihani
1
Revisions

v1.0

Sunday
April
15
2018