This application was my first endeavor into the world of ASP. It evolved from a VB program I had written to handle directory browsing for a site running Sambar 4-1. The application itself was designed to handle a problem sharing reports coming off a mainframe. The only solution prior to this application was to wait a few hours(or days) to get the report to paper and hand deliver it(even if you only needed 10 pages out of 100 page report).
The application design: this application assumes the report files have a .txt extension
- Get the report from the mainframe to the web site(in a text format). This is easy using FTP. If you need more info on this aspect email me and I will try to help you set up the FTP server.
- Allow browsing of the received report files.
- View the report files. Here we will allow options to view an enhanced report, or a standard report. The enhanced report does stuff like turns negative numbers to red and adds a green-bar or grey-bar background. The standard report is jst a link to the text file.
' We use the server object called mappath which gives the physical path to a virtual directory(or file). This assumes you have a virtual directory called REPORTS.
FTP_VIRTUAL_PATH = "/REPORTS"
FTP_PATH = SERVER.MAPPATH(FTP_VIRTUAL_PATH)
Note: The example here at Swynk.com has some added code since I dont have a reports virtual directory. The report files are in the same directory as this file. I had to map a path from the original page and chop off the file name to get a physical path to this directory.
SET O_FSO = CREATEOBJECT("SCRIPTING.FILESYSTEMOBJECT")
SET O_FOLDER = O_FSO.GETFOLDER(FTP_PATH)
SET O_FILES_IN_FOLDER = O_FOLDER.FILES
' These three lines of code obtain a collection of files within the FTP_PATH(folder).
NOTE: In the ftp job I created for the transfers, I preceed the file name with a 3 position userid to easily see who uploaded each file. This makes finding a specific report easier. The guts of this page shows a table with 4 columns. The first shows the persons id who uploaded the file, the second provides a link to the enhanced report(an ASP page), the third has a direct link to the report itself and the last column shows file information(creation date and size). The end result we want should look something like this:
|KIM||4th Quarter Summary||4th Quarter Summary||09/04/98 Size : 1,328|
|GAR||Q4 Dept Report||Q4 Dept Report||09/17/98 Size : 5,245|
The Code behind it:
First set up the table with headings:
<TABLE BORDER = "1" WIDTH = "100%">
<TD WIDTH="25%"><P ALIGN = "CENTER">UPLOADED BY</TD>
<TD WIDTH="25%"><P ALIGN = "CENTER">ENHANCED REPORT</TD>
<TD WIDTH="25%"><P ALIGN = "CENTER">REPORT</TD>
<TD WIDTH="25%"><P ALIGN = "CENTER">FILE INFO</TD>
Now for the Script:
<% FOR EACH OBJFILEITEM IN O_FILES_IN_FOLDER
USER = MID (OBJFILEITEM.NAME, 1, 3) ' Get the user id(the first 3 chars in the file name)
FILE_NAME = MID (OBJFILEITEM.NAME, 4, (LEN(OBJFILEITEM.NAME) - 1)) %> 'Get the file name minus the user id
<TD WIDTH = "25%"><P ALIGN = "CENTER"><%=USER%></TD> 'Note the<% =USER%> is a short cut it could also be coded as <% RESPONSE.WRITE( USER ) %>
<TD WIDTH = "25%"><P ALIGN = "CENTER"><A HREF = "ENHANCED.ASP?E_FILE = " <%=OBJFILEITEM.NAME%>"><%=FILE_NAME%></A><TD>
Here we create a link to the Enhanced.asp page passing it the variable E_FILE with the file name the user is requesting
<TD WIDTH = "25%"><P ALIGN = "CENTER"><A HREF = "
<% VIRTUAL_FILE = FTP_VIRTUAL_PATH + "/" + OBJFILEITEM.NAME
RESPONSE.WRITE VIRTUAL_FILE %> "> <%= FILE_NAME %> </A><TD> This creates a link directly to the report file.
<TD WIDTH = "25%"><P ALIGN = "CENTER"><%RESPONSE.WRITE OBJFILEITEM.DATECREATED & " SIZE " & OBJFILEITEM.SIZE%></TD> Display the date the file was created and the size of the file
<% NEXT %>
One of the things I am always trying to find time for is to create an administrative page which would allow for directory clean up of the reports directory. When I find the time to write it, I will post the code. If anyone has any improvements to suggest please email me and I will post your suggestions with full credit to you.