%@ language = VBScript %> <% '-------------------------------------------------------------------------------------------- ' download_e2.asp ' ' By Herman Liu ' ' This ASP is to list the files under a designated directory ready for download. File names ' are streamlined in uniform upper and lower cases, and sorted in an ascending order. Page ' navigational buttons will avail themselves when there are more than one pages, and will be ' appropriately updated as and when the user switches between pages, e.g. either "Next" or ' "Previous" if there are only two pages, additional "First" and/or "Last" if more than two. ' During browsing, a user can select any file for download by clicking on its name. ' '-------------------------------------------------------------------------------------------- %> <% Option Explicit On Error Resume Next Response.buffer = true DIM objFSO, objFolder, objFilesInFolder DIM arrFiles(), mFileCount, mPageSize, mPageNo, mPageCount DIM mDirPath, mFileSpec, mFile, mTemp DIM mServerName DIM i, j, k, s0, s1 DIM mformPage, mformCtl, mformCtlVal Dim mDownloadDir, mHttpPath ' Change as appropriate to your needs mPageSize = 8 ' Change to the actual directory name you have mDownloadDir = "Downloads" ' mDownloadDir should be one subdirectory down from where this page resides, e.g. ' if this page is on C:\InetPub\Wwwroot, your dir is C:\InetPub\Wwwroot\Downloads. ' The page should of course be in a directory that is defined as the home ' or a virtual directory. mDirPath = server.mapPath(".") & "\" & mDownloadDir 'mDirPath = server.mapPath("download_e2.asp") '----------------------------------------------- ' Following the earlier remarks, if C:\Inetpub\wwwroot is home directory, 'and this page is in C:\InetPub\Wwwroot, the URL should be '----------------------------------------------- mHttpPath = "/" & mDownloadDir & "/" '----------------------------------------------- ' but if this page is not in the home or a virtual directory '(e.g,. on PWS, the page may be in C:\InetPub\Webpub but C:\Inetpub\wwwroot is 'defined as the home directory), then you need to adjust: '----------------------------------------------- ' mHttpPath = "/WebPub/" & mDownloadDir & "/" ' Instances of object Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(mDirPath) Set objFilesInFolder = objFolder.Files mFileCount = objFilesInFolder.Count IF mFileCount = 0 Then Response.write "No file available for download yet." Set objFSO = Nothing Set objFolder = Nothing Set objFilesInFolder = Nothing Response.End End If mPageCount = INT(mFileCount \ mPageSize) IF ( mFileCount Mod mPageSize) > 0 THEN mPageCount = mPageCount + 1 End If ' Test the existence of a control on form. If exists, its name should ' have been wrapped up in HTTP header, since our form uses POST method. mformPage = Request.Form("HiddenPage") If mformPage <> "" Then IF mPageCount > 1 Then mPageNo = Cint(mformPage) ' Test the values returned. The unselected ones would have ' the pattern of "xxx" and the selected one "xxx, xxx". For Each mformCtl In Request.Form mformCtlVal = Request.Form(mformCtl) IF mformCtlVal = "First, First" Then mPageNo = 1 Exit For ElseIf mformCtlVal = "Previous, Previous" Then mPageNo = mPageNo - 1 Exit For ElseIf mformCtlVal = "Next, Next" Then mPageNo = mPageNo + 1 Exit For ElseIf mformCtlVal = "Last, Last" Then mPageNo = mPageCount Exit For End if Next Else mPageNo = 1 End If Else ' First run mPageNo = 1 End If ' Two dimension array, for File Name and Size columns (entry for Description ' column not provided here) ReDim arrFiles(mFileCount-1, 1) ' Store file name, size info to array i = 0 For Each mFile In objFilesInFolder ' First char upper, rest lower case, for display purposes only mTemp=UCASE(LEFT(mFile.Name,1)) & LCASE((RIGHT(mFile.Name, LEN(mFile.Name) -1))) arrFiles(i, 0) = mTemp ' Fill file size arrFiles(i, 1) = mFile.Size i = i + 1 Next ' Sort array by file name For i = 0 To UBOUND(arrFiles)-1 k = i s0 = arrFiles(i, 0) s1 = arrFiles(i, 1) For j = i + 1 To UBound(arrFiles) If StrComp(arrFiles(j, 0), s0, vbTextCompare) < 0 Then s0 = arrFiles(j, 0) s1 = arrFiles(j, 1) k = j End If Next arrFiles(k, 0) = arrFiles(i, 0) arrFiles(k, 1) = arrFiles(i, 1) arrFiles(i, 0) = s0 arrFiles(i, 1) = s1 Next %>
Home │
Links │
Download │
EditRegion1
![]()
List of Files
Total: <%= cStr(mFileCount) %>
files. Page <%=Cstr(mPageNo) %> of
<%=Cstr(mPageCount) %> page(s).
|   File Name | Bytes |
|---|---|
| <%=arrFiles(i,0)%> |
<%=arrFiles(i,1)%> |
<%
j = j + 1 ' Count to control the max
IF j = mPageSize then ' j is zero-based
Exit For
End If
Next
' Fill up one page with blanks
DO WHILE j < mPageSize
%>
| | |