Приложение должно быть прозрачным для пользователя.
Для человека, который хочет загрузить файл из файлового архива
интерфейс будет выглядеть как простая HTML страница.
Установка
Для работы, этого скрипта, надо создать директорий в Вашем WEBе
и сделать его виртуальным директорием FTP. а также установить права чтения.
Тут будет хранится страница по умолчанию и вся нужная графика.
В этом каталоге создаются подкаталоги (сколько угодно с различными архивами).
Надо создать еще один каталог с правами выполнения скриптов
Этот директорий будет содержать Активную страницу Сервера,
на которую пользователь попадает для просмотра файлового архива.
Должен существовать лишь один ASP файл, с именем dir.asp,
для всех вариантов показа архива.
Входной параметр определяет в каком виде , откуда и что показывать пользователю.
Следуйте этим инструкциям для создания директория (имена можно давать свои - в этом случае придется менять в исходнике).
После этого можно разместить dir.asp (см Пример) в директории scripts.
Пример
Скрипт начинает свою работу с проверки - существует ли заданный каталог.
Имя этого каталога используется для того , чтобы сделать ссылку на
требуемый подкаталог каталога files.
Если он существует, то dir.asp покажет все файлы заданной директории.
Для этого из вызывающеей страницы обязательно должна передаваться переменная
"Path" c указанием URL требуемого каталога.
В противном случае происходит переадресация на файл no_path.htm
размещаемый в каталоге repository(см пример в конце статьи).
<%
if request.QueryString("path")="" then
response.redirect("no_path.htm")
end if
subDir=request.QueryString("path")
%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Directory Listing</title>
</head>
<body bgcolor="#FFFFFF">
<%
if request.QueryString("title")="" or _
isEmpty(request.QueryString("title")) then
%>
<h2 align="center"><%=subDir%></h2><br>
<%else%>
<h2 align="center"><%=request.QueryString("title")%></h2><br>
<%end if%>
<hr>
<p><font size="2">Please click once on the description of the
file that interests you. A dialog box will pop up asking:
"What do you want to do with this file?
" Select "<strong>open it</strong>."
The file will be downloaded and your application will open.
From here you may view it, print it, or
save it (using the "<strong>save as...</strong>"
option) to your hard drive.</font><br>
</p>
<hr>
<div align="center"><center>
<table border="0" cellpadding="6" cellspacing="0" width="550">
<%
Set fileIO = CreateObject("Scripting.FileSystemObject")
path=Server.Mappath("/")
path=path & subDir
Set Dir=fileIO.GetFolder(path)
Set FileCollect=Dir.Files
For Each item in FileCollect
Fsize=item.size
Fname=item.name
FileName=split(Fname,".",2)
title=FileName(0)
short_title=split(title,"_",2)
link="../../" & subdir & FName
%>
<tr>
<% select case FileName(1)
Case "html"%>
<td align="center">
<img src="../icons/html.gif" width="32" height="32" border="0">
</td>
<td align="default"><strong>
<a href="<%=link %>">
<%=short_title(1)%></a>
</strong></td>
<td align="right"><%=Fsize%> bytes</td>
<% Case "doc"%>
<td align="center">
<img src="../icons/word.gif" width="32" height="32" border="0">
</td>
<td align="default"><strong>
<a href="<%=link %>">
<%=short_title(1) %></a>
</strong></td>
<td align="right"><%=Fsize%> bytes</td>
<% Case "xls"%>
<td align="center">
<img src="../icons/excel.gif" width="32" height="32" border="0">
</td>
<td align="default"><strong>
<a href="<%=link %>"><%=short_title(1) %></a>
</strong></td>
<td align="right"><%=Fsize%> bytes</td>
<% Case "exe"%>
<td align="center">
<img src="../icons/pkzip.gif"
width="32" height="32" border="0"></td>
<td align="default"><strong>
<a href="<%=link%>"><%=short_title(1) %></a>
</strong></td>
<td align="right"><%=Fsize%> bytes</td>
<% end select %>
</tr>
<%
Next
set fileIO=Nothing
%>
</table>
</center></div>
</body>
</html>
Также в качестве параметра можно передавать переменную (title) с заголовком страницы.
Ниже приводится пример вызова dir.asp с заданием показать содержимое каталога /lizards/Big/
и с заголовком "Это каталог BIG":
Внимание Слэши передаются в виде %5C а пробелы в виде‘+’ .
<a href="dir.asp?title=Это+Каталог+BIG&path=%5Crepository%5Cfiles%5Clizards%5Cbig">Каталог BIG</a>
Если переменная с заголовком страницы не передана то , по умолчанию в качестве заголовка используется указанный путь.
После показа заголовка страницы и вывода соответствующих комментариев
скрипт приступает к созданию объекта FileSystemObject
Set fileIO = CreateObject("Scripting.FileSystemObject")
Метод Сервер.Mappath("/") возвращает физический маршрут
в wwwroot директории сервера.
Объект директория затем извлекается с помощью метода GetFolder
объекта file system с соответствии с правами доступа к файлам.
Now all that is left to do is iterate through the file collection with
the For Each loop and identify the files and their properties. For convenience
the extension of the file is removed to be later replaced with a graphical
icon identifying a known file type. Note that the split function parses the
string and inserts its separated parts into an array. We use the Select case
structure to check for expected file extensions and display the appropriate
icon next to those files.
Далее с помощью цикла For выводим на экран имена файлов (расширения удаляются)
т.к. вместо них будет соответствующая иконка (см Select case).