DOCUMENT:Q272656  13-MAY-2002  [iis]
TITLE   :How to Create a File Viewer By Using ASP
PRODUCT :Internet Information Server
PROD/VER::4.0,5.0
OPER/SYS:
KEYWORDS:kbIIS

======================================================================
-------------------------------------------------------------------------------
The information in this article applies to:

 - Microsoft Internet Information Server version 4.0 
 - Microsoft Internet Information Services version 5.0 
-------------------------------------------------------------------------------

SUMMARY
=======

This article describes how to use Microsoft Active Server Pages (ASP)
technologies to create a generic file viewer by using the
Scripting.FileSystemObject.

Important Note:

If you use the code in this article improperly, the code can be used to view
folders outside of a Web site. For additional information on preventing this,
click the article numbers below to view the articles in the Microsoft Knowledge
Base:

   Q184717 AspEnableParentPaths MetaBase Property Should Be Set To False

   Q276548 ASP Error 0131 When Browsing to Database Results Region ASP Page

MORE INFORMATION
================

General Disclaimer:

Microsoft provides programming examples for illustration only, without warranty
either expressed or implied, including, but not limited to, the implied
warranties of merchantability and/or fitness for a particular purpose. This
article assumes that you are familiar with the programming language being
demonstrated and the tools used to create and debug procedures. Microsoft
support professionals 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 needs. If you have
limited programming experience, you may want to contact a Microsoft Certified
Partner or the Microsoft fee-based consulting line at (800) 936-5200. For more
information about Microsoft Certified Partners, please visit the following
Microsoft Web site:

   http://www.microsoft.com/partner/referral/

For more information about the support options that are available and about how
to contact Microsoft, visit the following Microsoft Web site:

   http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Page Viewer Example Code:

Use the following steps to create the page viewer ASP page.

NOTE: You must have Basic/Clear Text, Integrated/NTLM, or Digest authentication
enabled to use this example.

1. Open Notepad on a Web server that is running Microsoft Internet Information
   Server version 4.0 or Internet Information Services version 5.0.

2. Run the following ASP code:

   <% @Language="VBScript" %>
   <%  
     On Error Resume Next ' don't worry about errors

     ' turn on buffering
     Response.Buffer = True

     ' make sure that client is authenticated
     If Len(Trim(CStr(Request.ServerVariables("LOGON_USER")))) = 0 Then
       Response.Status = "401 Access Denied"
       Response.End
     End If
   %>
   <html>
   <head>
   <title>File Viewer</title>
   </head>
   <body>

   <h2>File Viewer</h2>

   <!-- show a form to allow users to specify a file -->
   <form action="<%=Request.ServerVariables("URL")%>" method="POST">
   <input type="text" name="FILE" value="<%=Request.Form("FILE")%>">
   <input type="submit" value="View File">
   </form>

   <pre>
   <%
     ' was it a POST request?
     If UCase(Request.ServerVariables("HTTP_METHOD")) = "POST" Then

       ' create object for file I/O
       Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
       ' open the specified file
       Set objFILE = objFSO.OpenTextFile(Request.Form("FILE"))
       
       ' output message if an error has occured
       If Err.Number <> 0 Then

         Response.Write "Error trying open the file """ & _
             Request.Form("FILE") & """" & vbCrLf & _
             "Error Number = " & Err.Number & vbCrLf & _
             "Error Description = " & Err.Description & vbCrLf

       ' otherwise show the file
       Else

         ' show the page start
         Response.Write "----- START OF PAGE -----" & vbCrLf
       
         ' loop through the page contents
         While Not objFILE.AtEndOfStream
           Response.Write Server.HTMLEncode(objFILE.ReadLine) & vbCrLf
         Wend

         ' show the page end
         Response.Write "----- END OF PAGE -----" & vbCrLf

         ' close the specified file
         objFILE.Close
         ' discard the file I/O object
         Set objFSO = Nothing

       End If

     End If
   %>
   </pre>
   </body>
   </html>

3. Save the page as "Viewer.asp"in the root folder of your Web site.

4. Browse to the page through HTTP, and then enter the path of the directory
   that you want to view. The folder's contents should display.

REFERENCES
----------

For additional information on this topic, click the article numbers below to view
the articles in the Microsoft Knowledge Base:

   Q218606 HOWTO: ASP and Scripting FileSystemObject to Create Dynamic TOC

   Q224364 Creating a Directory Browsing Page Using ASP

   Q201133 Scripting Change Occurs When Upgrading from IIS 3.0

Additional query words: iis

======================================================================
Keywords          : kbIIS 
Technology        : kbiisSearch kbiis500 kbiis400
Version           : :4.0,5.0
Issue type        : kbhowto

=============================================================================

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS
PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.  MICROSOFT DISCLAIMS
ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  IN NO
EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR
ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL,
CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF
MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.  SOME STATES DO NOT ALLOW THE EXCLUSION
OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES
SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 2002.