Представление в Internet содержимого каталога средствами ASP Христофоров Юрий
В этой статье я на примере расскажу, как используя ASP (Active Server Pages) можно построить содержимое каталога Web аналогично тому, как это выглядит на FTP сервере.
Постановка задачи: На Web-сервере есть каталог, например: C:\InetPub\wwwroot\user1. Пусть данный каталог имеет несколько вложенных каталогов и набор файлов в этих каталогах. Примерная структура папок представлена на Рис. 1.
Рис. 1.
В каждом из представленных на рисунке каталогах может находиться неограниченное количество файлов, либо некоторые из каталогов могут быть пустыми. Необходимо представить содержимое папки user1 на Web-странице в дружественном для пользователя виде.
Интересной особенностью скрипта является то, что применяя страницу с фреймами (кадрами), можно построить меню пользователя.
Результат должен выглядеть примерно следующим образом:
Находимся в папке C:\Inetpub\wwwroot\user1\folder1\subfolder2:
На данном скриншоте показан пример меню. Страница menu.htm разделена на два фрейма. В левом фрейме находится файл list_files.asp, а правый фрейм используется для отображения файлов, ссылки на которые находятся в левом фрейме. В левом фрейме можно свободно перемещаться по папкам. Т.о. можно организовать меню пользователя.
Решение: Ключ к решению данной задачи - это использование MicrosoftR Scripting Library. Нас будет интересовать такой объект этой библиотеки, как FileSystemObject. FileSystemObject предоставляет объектную модель доступа к файловой системе. Далее, пользуясь средствами языка написания сценариев VBScript, выполняемого на Web-сервере, можно написать одну ASP-страницу, которая будет выполнять всю работу. Итак, приступим.
Листинг файла list_files.asp:
'Отключаем кэширование страницы
' строка2.
If StrComp(CStr(arr(i)), CStr(arr(j)), vbTextCompare) < 0 Then
t = arr(j)
arr(j) = arr(i)
arr(i) = t
End If
Next
Next
'Возвращаем результат
SortStr = arr
End Function
Sub Main_Print(arr,flag)
'flag = 1 - вывод для каталогов
'flag = 0 - вывод для файлов
Dim i,k,tmp
i = 0
Select Case flag
Case 1
'Если находимся в подкаталоге, то надо предусмотреть возможность вернуться
'на уровень выше
If curr_dir2 "" Then
'Ищем последнее вхождение символа разделителя каталогов "\"
k = InStrRev(curr_dir2,"\")
If k 0 Then
'Получаем имя каталога верхнего уровня
tmp = Mid(curr_dir2,1,k-1)
Response.Write "" 'Вывод HTML
'Для украшения используем графический файл open.gif - изображение открытой папки.
Response.Write ""
'Формируем ссылку на верхний каталог
Response.Write "
" & " .. " & ""
End If
End If
'Основной цикл вывода названий каталогов
For i = 0 To UBound(arr)-1
Response.Write ""
Response.Write ""
Response.Write "
" & arr(i) & _
""
Next
'Вывод имен файлов
Case 0
'Основной цикл вывода имен файлов
For i = 0 To UBound(arr)-1
Response.Write ""
Response.Write ""
'Заменяем "\" на "/" для использования в URL
'Атрибут target нужен для указания ссылки на фрейм
Response.Write "
" & arr(i) & ""
Next
End Select
End Sub
%>
Далее необходимо написать страницу menu.htm, содержащую два фрейма, как было показано выше. ............