Results 1 to 2 of 2

Thread: Hard Q? Generating a list of documents(as hyperlinks) in a folder

  1. #1

    Thread Starter
    Addicted Member
    Join Date
    Aug 2000
    Location
    Ireland
    Posts
    224

    Hard Q? Generating a list of documents(as hyperlinks) in a folder

    Hi Guys
    I have a an ASP page that calls an activeX dll that I wrote. The user selects a few choices on the form on my ASP page and presses submit. This then calls the dll and generates reports in the form of html documents in a folder on the webserver.
    Now what I want to be able to do is produce a list of the names of the files that I create in a type of list box or even just a list of hyperlinks on a web page. Can someone please let me know how to go about sorting out a problem like this.
    Thanks
    JK

  2. #2
    Hyperactive Member PJB's Avatar
    Join Date
    Aug 2000
    Location
    dunno at the moment
    Posts
    302
    This will give you a list of all files in a specified directory, this isn't something i wrote but it may do what ya need:

    Code:
    <%@ language = VBScript %>
    
    <%
    '--------------------------------------------------------------------------------------------
    '  LisFiles.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 = "Music"
    
          ' 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
    
          '-----------------------------------------------
          ' 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 
    %>
    
    <HTML>
    <HEAD>
    <TITLE> List of files for download </TITLE>
    <META http-equiv="Content-Type"; Content="text/html; Charset=iso-8859-1">
    </HEAD>
    <BODY bgcolor="#ccffff">
    <%'<IMAGE SRC="LisFiles.gif" VSPACE=2 HSPACE=15 ALIGN=CENTER> %>
    <P align = "Center">
    <FONT COLOR="Black" FACE="ARIAL" SIZE="4"> <B> List of Files </B> </FONT> <BR>
    <BR>
    <FONT FACE="ARIAL" SIZE="1"> <B> &nbsp; Total: &nbsp; <%= cStr(mFileCount) %>
        &nbsp; files. &nbsp; &nbsp; &nbsp; Page &nbsp; <%=Cstr(mPageNo) %> &nbsp; of &nbsp;
        <%=Cstr(mPageCount) %>  &nbsp; page(s). </B></FONT>
    <BR> <BR></p>
    
    <TABLE CELLPADDING=6 ALIGN=CENTER CELLSPACING=0 BORDER=1>
    <TR> <TH ALIGN=CENTER><B> &nbsp File Name </B></TH>  <TH ALIGN=CENTER>Bytes</TH></TR>
      
    
    <% 
       k = (mPageNo - 1) * mPageSize
       j = 0
       FOR i = k To mFileCount -1
               '-------------------------------------------------------------------
               ' To form an URL which will be used as an anchor tag for file name
               '-------------------------------------------------------------------
         
            mTemp = mHttpPath & arrFiles(i, 0)
    %>
    
           <TR><TD><A HREF="<%=mTemp%>"> <%=arrFiles(i,0)%> </A> <BR></TD>
             <TD ALIGN=CENTER> <%=arrFiles(i,1)%> <BR></TD> 
    
    
    <%      
            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
    %>
            <TR><TD> &nbsp; <BR></TD>  <TD> &nbsp; <BR></TD> </TR> 
    <%
            j = j + 1
       LOOP
    %>
    </TABLE>
    <P Align = "Center">
    <FORM NAME="UpdPage" ACTION="LisFiles.asp" METHOD="POST">
    <INPUT TYPE="HIDDEN" NAME="HiddenPage" VALUE="<%=cstr(mPageNo)%>">
    <INPUT TYPE="HIDDEN" NAME="OfFirst" VALUE="First" STYLE="ALIGN=CENTER; WIDTH=70; COLOR=MAROON;"> 
    <INPUT TYPE="HIDDEN" NAME="OfPrevious" VALUE="Previous" STYLE="ALIGN=CENTER; WIDTH=70; COLOR=MAROON;">
    <INPUT TYPE="HIDDEN" NAME="OfNext"  VALUE="Next" STYLE="ALIGN=CENTER; WIDTH=70; COLOR=MAROON;">
    <INPUT TYPE="HIDDEN" NAME="OfLast"  VALUE="Last" STYLE="ALIGN=CENTER; LEFT=10; WIDTH=70; COLOR=MAROON;">
    
    <% IF mPageCount>1 Then %>
    <% If mPageNo=1 Then %>
    <INPUT TYPE="SUBMIT" ALIGN=CENTER NAME="OfNext"  VALUE="Next" STYLE="ALIGN=CENTER; WIDTH=70; COLOR=MAROON;">
    <% If mPageCount>2 Then %>
    <INPUT TYPE="SUBMIT" ALIGN=CENTER NAME="OfLast"  VALUE="Last" STYLE="ALIGN=CENTER; WIDTH=70; COLOR=MAROON;">
    <% End If %>
    <% ElseIf mPageNo=mPageCount Then %>
    <% If mPageCount>2 Then %>
    <INPUT TYPE="SUBMIT" ALIGN=CENTER NAME="OfFirst" VALUE="First" STYLE="ALIGN=CENTER; WIDTH=70; COLOR=MAROON;"> 
    <% End If %>
    <INPUT TYPE="SUBMIT" ALIGN=CENTER NAME="OfPrevious" VALUE="Previous" STYLE="ALIGN=CENTER; WIDTH=70; COLOR=MAROON;">
    <% ElseIf mPageNo>1 And mPageNo<mPageCount Then %>
    <% If mPageCount>2 Then %>
    <INPUT TYPE="SUBMIT" ALIGN=CENTER NAME="OfFirst" VALUE="First" STYLE="ALIGN=CENTER; WIDTH=70; COLOR=MAROON;"> 
    <% End If %>
    <INPUT TYPE="SUBMIT" ALIGN=CENTER NAME="OfPrevious" VALUE="Previous" STYLE="ALIGN=CENTER; WIDTH=70; COLOR=MAROON;">
    <INPUT TYPE="SUBMIT" ALIGN=CENTER NAME="OfNext"  VALUE="Next" STYLE="ALIGN=CENTER; WIDTH=70; COLOR=MAROON;">
    <% If mPageCount>2 Then %>
    <INPUT TYPE="SUBMIT" ALIGN=CENTER NAME="OfLast"  VALUE="Last" STYLE="ALIGN=CENTER; WIDTH=70; COLOR=MAROON;">
    <% End If %>
    <% End If %>
    <% End If %>
    
    </FORM>
    
    <P Align = "Center"><%= FormatDateTime(Date, 1) %> 
    </BODY>
    </HTML>
    <%
       Set objFSO = Nothing
       Set objFolder = Nothing
       Set objFilesInFolder = Nothing
       Response.End
    %>
    VB6.0 SP4
    Windows 2000
    I'm thinking of a number between

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width