Registrations are now open. Join us today!
There is still a lot of work to do on the wiki yet! More information about editing can be found here.
Already have an account?

Microsoft KB Archive/247745

From BetaArchive Wiki
Knowledge Base


Article ID: 247745

Article Last Modified on 11/21/2006



APPLIES TO

  • Microsoft Internet Information Services 5.0



This article was previously published under Q247745

SUMMARY

This article describes the process for returning a random image from a folder in your Web site using Microsoft Active Server Pages (ASP) and the Scripting.FileSystemObject.

MORE INFORMATION

Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.

Random Images from ASP

Use the following steps to create an include file for use with ASP containing the RandomImage() function. The RandomImage() function randomly returns the name of an image based on the contents in a folder, which is passed by name to the function, or based on the name of a default image if no images are found in the folder.

  1. Create a folder named "Images" in your Web site's root folder.Copy a few .gif or .jpg images into the Images folder.Save the following ASP page as "RandomTest.asp" in your Web site's root folder:

    <% @Language="VBScript" %>
    <% Option Explicit %>
    <html>
    <head>
    <!--#include virtual="/includes/RandomImage.inc"-->
    </head>
    <body>
    <div align="center"><center>
    <table border="1">
      <tr>
        <td bgcolor="#ffffff">
          <img src="<%=RandomImage("/images/","/images/default.gif")%>">
        </td>
      </tr>
    </table>
    </center></div>
    </body>
    </html>
                            

    Note: The call to the RandomImage() function passes the name of the default image as /Images/Default.gif. You will need to change that to a valid image name and path when you want the function to a return a default image when a folder contains no images.

    Create a folder named "Includes" in your Web site's root directory.Save the following ASP code in the Includes folder as RandomImage.inc:

    <%
      Function RandomImage(strPath,strDefault)
        On Error Resume Next
        Randomize Timer
    
        ' declare all variables
        Dim objFSO, objFolder, objFiles, objFile
        Dim strFiles, strImages, strPhysical, strFile
    
        ' this constant has the names of valid image file name
        ' extensions and can be modified for more image types
        Const strValid = ".gif.jpg.png"
    
        ' make sure we have a trailing slash in the path
        If Right(strPath,1) <> Chr(47) Then strPath = strPath & Chr(47)
        ' get the physical path of the folder
        strPhysical = Server.MapPath(strPath)
        ' get a File System Object
        Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
        ' create a folder object
        Set objFolder = objFSO.GetFolder(strPhysical)
        ' get the files collection
        Set objFiles = objFolder.Files
    
        ' enumerate the files collection looking for images
        For Each objFile in objFiles
          strFile = LCase(objFile.Name)
          If Instr(strValid,Right(strFile,4)) Then
            ' add vaild images to a string of image names
            strFiles = strFiles & strFile & vbTab
          End If
        Next
    
        ' split the image names into an array
        strImages = Split(strFiles,vbTab)
        
        ' if we have an array...
        If UBound(strImages) > 1 Then
          ' get a random name
          RandomImage = strPath & strImages(Int(Rnd(1)*UBound(strImages)))
        Else
          ' otherwise return the default
          RandomImage = strDefault
        End If
    
      End Function
    %>
                            

    Browse the RandomTest.asp page; it should display a single image in a table.

  2. Copy a few .gif or .jpg images into the Images folder.Save the following ASP page as "RandomTest.asp" in your Web site's root folder:

    <% @Language="VBScript" %>
    <% Option Explicit %>
    <html>
    <head>
    <!--#include virtual="/includes/RandomImage.inc"-->
    </head>
    <body>
    <div align="center"><center>
    <table border="1">
      <tr>
        <td bgcolor="#ffffff">
          <img src="<%=RandomImage("/images/","/images/default.gif")%>">
        </td>
      </tr>
    </table>
    </center></div>
    </body>
    </html>
                            

    Note: The call to the RandomImage() function passes the name of the default image as /Images/Default.gif. You will need to change that to a valid image name and path when you want the function to a return a default image when a folder contains no images.

    Create a folder named "Includes" in your Web site's root directory.Save the following ASP code in the Includes folder as RandomImage.inc:

    <%
      Function RandomImage(strPath,strDefault)
        On Error Resume Next
        Randomize Timer
    
        ' declare all variables
        Dim objFSO, objFolder, objFiles, objFile
        Dim strFiles, strImages, strPhysical, strFile
    
        ' this constant has the names of valid image file name
        ' extensions and can be modified for more image types
        Const strValid = ".gif.jpg.png"
    
        ' make sure we have a trailing slash in the path
        If Right(strPath,1) <> Chr(47) Then strPath = strPath & Chr(47)
        ' get the physical path of the folder
        strPhysical = Server.MapPath(strPath)
        ' get a File System Object
        Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
        ' create a folder object
        Set objFolder = objFSO.GetFolder(strPhysical)
        ' get the files collection
        Set objFiles = objFolder.Files
    
        ' enumerate the files collection looking for images
        For Each objFile in objFiles
          strFile = LCase(objFile.Name)
          If Instr(strValid,Right(strFile,4)) Then
            ' add vaild images to a string of image names
            strFiles = strFiles & strFile & vbTab
          End If
        Next
    
        ' split the image names into an array
        strImages = Split(strFiles,vbTab)
        
        ' if we have an array...
        If UBound(strImages) > 1 Then
          ' get a random name
          RandomImage = strPath & strImages(Int(Rnd(1)*UBound(strImages)))
        Else
          ' otherwise return the default
          RandomImage = strDefault
        End If
    
      End Function
    %>
                            

    Browse the RandomTest.asp page; it should display a single image in a table.

  3. Save the following ASP page as "RandomTest.asp" in your Web site's root folder:

    <% @Language="VBScript" %>
    <% Option Explicit %>
    <html>
    <head>
    <!--#include virtual="/includes/RandomImage.inc"-->
    </head>
    <body>
    <div align="center"><center>
    <table border="1">
      <tr>
        <td bgcolor="#ffffff">
          <img src="<%=RandomImage("/images/","/images/default.gif")%>">
        </td>
      </tr>
    </table>
    </center></div>
    </body>
    </html>
                            

    Note: The call to the RandomImage() function passes the name of the default image as /Images/Default.gif. You will need to change that to a valid image name and path when you want the function to a return a default image when a folder contains no images.

    Create a folder named "Includes" in your Web site's root directory.Save the following ASP code in the Includes folder as RandomImage.inc:

    <%
      Function RandomImage(strPath,strDefault)
        On Error Resume Next
        Randomize Timer
    
        ' declare all variables
        Dim objFSO, objFolder, objFiles, objFile
        Dim strFiles, strImages, strPhysical, strFile
    
        ' this constant has the names of valid image file name
        ' extensions and can be modified for more image types
        Const strValid = ".gif.jpg.png"
    
        ' make sure we have a trailing slash in the path
        If Right(strPath,1) <> Chr(47) Then strPath = strPath & Chr(47)
        ' get the physical path of the folder
        strPhysical = Server.MapPath(strPath)
        ' get a File System Object
        Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
        ' create a folder object
        Set objFolder = objFSO.GetFolder(strPhysical)
        ' get the files collection
        Set objFiles = objFolder.Files
    
        ' enumerate the files collection looking for images
        For Each objFile in objFiles
          strFile = LCase(objFile.Name)
          If Instr(strValid,Right(strFile,4)) Then
            ' add vaild images to a string of image names
            strFiles = strFiles & strFile & vbTab
          End If
        Next
    
        ' split the image names into an array
        strImages = Split(strFiles,vbTab)
        
        ' if we have an array...
        If UBound(strImages) > 1 Then
          ' get a random name
          RandomImage = strPath & strImages(Int(Rnd(1)*UBound(strImages)))
        Else
          ' otherwise return the default
          RandomImage = strDefault
        End If
    
      End Function
    %>
                            

    Browse the RandomTest.asp page; it should display a single image in a table.

  4. Create a folder named "Includes" in your Web site's root directory.Save the following ASP code in the Includes folder as RandomImage.inc:

    <%
      Function RandomImage(strPath,strDefault)
        On Error Resume Next
        Randomize Timer
    
        ' declare all variables
        Dim objFSO, objFolder, objFiles, objFile
        Dim strFiles, strImages, strPhysical, strFile
    
        ' this constant has the names of valid image file name
        ' extensions and can be modified for more image types
        Const strValid = ".gif.jpg.png"
    
        ' make sure we have a trailing slash in the path
        If Right(strPath,1) <> Chr(47) Then strPath = strPath & Chr(47)
        ' get the physical path of the folder
        strPhysical = Server.MapPath(strPath)
        ' get a File System Object
        Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
        ' create a folder object
        Set objFolder = objFSO.GetFolder(strPhysical)
        ' get the files collection
        Set objFiles = objFolder.Files
    
        ' enumerate the files collection looking for images
        For Each objFile in objFiles
          strFile = LCase(objFile.Name)
          If Instr(strValid,Right(strFile,4)) Then
            ' add vaild images to a string of image names
            strFiles = strFiles & strFile & vbTab
          End If
        Next
    
        ' split the image names into an array
        strImages = Split(strFiles,vbTab)
        
        ' if we have an array...
        If UBound(strImages) > 1 Then
          ' get a random name
          RandomImage = strPath & strImages(Int(Rnd(1)*UBound(strImages)))
        Else
          ' otherwise return the default
          RandomImage = strDefault
        End If
    
      End Function
    %>
                            

    Browse the RandomTest.asp page; it should display a single image in a table.

  5. Save the following ASP code in the Includes folder as RandomImage.inc:

    <%
      Function RandomImage(strPath,strDefault)
        On Error Resume Next
        Randomize Timer
    
        ' declare all variables
        Dim objFSO, objFolder, objFiles, objFile
        Dim strFiles, strImages, strPhysical, strFile
    
        ' this constant has the names of valid image file name
        ' extensions and can be modified for more image types
        Const strValid = ".gif.jpg.png"
    
        ' make sure we have a trailing slash in the path
        If Right(strPath,1) <> Chr(47) Then strPath = strPath & Chr(47)
        ' get the physical path of the folder
        strPhysical = Server.MapPath(strPath)
        ' get a File System Object
        Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
        ' create a folder object
        Set objFolder = objFSO.GetFolder(strPhysical)
        ' get the files collection
        Set objFiles = objFolder.Files
    
        ' enumerate the files collection looking for images
        For Each objFile in objFiles
          strFile = LCase(objFile.Name)
          If Instr(strValid,Right(strFile,4)) Then
            ' add vaild images to a string of image names
            strFiles = strFiles & strFile & vbTab
          End If
        Next
    
        ' split the image names into an array
        strImages = Split(strFiles,vbTab)
        
        ' if we have an array...
        If UBound(strImages) > 1 Then
          ' get a random name
          RandomImage = strPath & strImages(Int(Rnd(1)*UBound(strImages)))
        Else
          ' otherwise return the default
          RandomImage = strDefault
        End If
    
      End Function
    %>
                            

    Browse the RandomTest.asp page; it should display a single image in a table.

  6. Browse the RandomTest.asp page; it should display a single image in a table.


Keywords: kbhowto kbscript kbcodesnippet kbfso KB247745