<%@LANGUAGE="VBSCRIPT"%> <% ' *** Restrict Access To Page: Grant or deny access to this page MM_authorizedUsers="coffers,hess,all,faults,dti,kmg,total,lewis,hall,admin,conoco" MM_authFailedURL="../home2.asp" MM_grantAccess=false If Session("MM_Username") <> "" Then If (false Or CStr(Session("MM_UserAuthorization"))="") Or _ (InStr(1,MM_authorizedUsers,Session("MM_UserAuthorization"))>=1) Then MM_grantAccess = true End If End If If Not MM_grantAccess Then MM_qsChar = "?" If (InStr(1,MM_authFailedURL,"?") >= 1) Then MM_qsChar = "&" MM_referrer = Request.ServerVariables("URL") if (Len(Request.QueryString()) > 0) Then MM_referrer = MM_referrer & "?" & Request.QueryString() MM_authFailedURL = MM_authFailedURL & MM_qsChar & "accessdenied=" & Server.URLEncode(MM_referrer) Response.Redirect(MM_authFailedURL) End If %> <% %> <% Function ShowImageForType(strName) Dim strTemp ' Set our working string to the one passed in strTemp = strName ' If it's not a directory, get the extension and set it to strTemp ' If it is a directory, then we already have the correct value If strTemp <> "dir" Then strTemp = LCase(Right(strTemp, Len(strTemp) - InStrRev(strTemp, ".", -1, 1))) End If ' Debugging line used to perfect that above string parser 'Response.Write strTemp ' Set the part of the image file name that's unique to the type of file ' to it's correct value and set this to strTemp. (yet another use of it!) Select Case strTemp Case "asp" strTemp = "asp" Case "dir" strTemp = "dir" Case "htm", "html" strTemp = "htm" Case "gif", "jpg" strTemp = "img" Case "txt" strTemp = "txt" Case Else strTemp = "misc" End Select ' All our logic is done... build the IMG Tag for display to the browser ' Place it into... where else... strTemp! ' My images are all GIFs and all start with "dir_" for my own sanity. ' They end with one of the values set in the select statement above. strTemp = "" ' Set return value and exit function ShowImageForType = strTemp End Function 'That's it for functions on this one! %> <%' Now to the Runtime code: Dim strPath 'Path of directory to show Dim objFSO 'FileSystemObject variable Dim objFolder 'Folder variable Dim objItem 'Variable used to loop through the contents of the folder ' A recordset object variable and some selected constants from adovbs.inc. ' I use these for the sorting code. Dim rstFiles Const adVarChar = 200 Const adInteger = 3 Const adDate = 7 ' You could just as easily read this from some sort of input, but I don't ' need you guys and gals roaming around our server so I've hard coded it to ' a directory I set up to illustrate the sample. ' NOTE: As currently implemented, this needs to end with the / strPath = "./coffers/" ' Create our FSO Set objFSO = Server.CreateObject("Scripting.FileSystemObject") ' Get a handle on our folder Set objFolder = objFSO.GetFolder(Server.MapPath(strPath)) ' Show a little description line and the title row of our table %> :::Subsurface Programmes:::
Subsurface Programmes
Visit the ITF web site
Quick Link



 
 
 


 
 
 
Download Help

The following documents are available for download:

For assistance in downloading larger files  Download Help

<% ' First I deal with any subdirectories. I just display them and when you ' click you go to them via plain HTTP. You might want to loop them back ' through this file once you've set it up to take a path as input. It seems ' like the logical thing to do to me at least! For Each objItem In objFolder.SubFolders ' Deal with the stupid VTI's that keep giving our visitors 404's If InStr(1, objItem, "_vti", 1) = 0 Then %> <% End If Next 'objItem ' Now that I've done the SubFolders, do the files! ' In order to be able to sort them easily and still close the FSO relatively ' quickly I'm going to make use of an ADO Recordset object with no attached ' datasource. While it does have a slightly greater overhead then an array ' or dictionary object, it gives me named access to the fields and has built ' in sorting functionality. Set rstFiles = Server.CreateObject("ADODB.Recordset") rstFiles.Fields.Append "name", adVarChar, 255 rstFiles.Fields.Append "size", adInteger rstFiles.Fields.Append "date", adDate rstFiles.Fields.Append "type", adVarChar, 255 rstFiles.Open For Each objItem In objFolder.Files rstFiles.AddNew rstFiles.Fields("name").Value = objItem.Name rstFiles.Fields("size").Value = objItem.Size rstFiles.Fields("date").Value = objItem.DateCreated rstFiles.Fields("type").Value = objItem.Type Next 'objItem ' All done! Kill off our File System Object variables. Set objItem = Nothing Set objFolder = Nothing Set objFSO = Nothing ' Now we can sort our data and display it: ' Sort ascending by size and secondarily descending by date ' (by date is mainly for illustration since all our files ' are different sizes) rstFiles.Sort = "date DESC" rstFiles.MoveFirst Do While Not rstFiles.EOF %> <% rstFiles.MoveNext Loop ' Close our ADO Recordset object rstFiles.Close Set rstFiles = Nothing 'Close the table %>
File Name: Size (bytes): Date Created:
<%= ShowImageForType("dir") %> <%= objItem.Name %> <%= objItem.Size %> <%= objItem.DateCreated %>
<%= ShowImageForType(rstFiles.Fields("name").Value) %> "><%= rstFiles.Fields("name").Value %> <%= rstFiles.Fields("size").Value %> <%= rstFiles.Fields("date").Value %>