Статья

Статья Представление в Internet содержимого каталога средствами ASP

Работа добавлена на сайт bukvasha.net: 2015-10-29

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 26.12.2024



Представление в 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:

<%Response.Expires=0%> 'Отключаем кэширование страницы

<HTML>

<BODY>

<!-Серверный сценарий

<%

Dim root_folder, root_vfolder, curr_dir, curr_dir2, temp_arr

'root_folder - переменная для хранения физического пути к корневой папке USER1

root_folder = "c:\inetpub\wwwroot\user1"

'root_vfolder - переменная для хранения виртуального пути к папке USER1

'localhost - имя Вашего сервера

root_vfolder = "http://localhost/user1"

'curr_dir2 - имя текущей (активной) папки

curr_dir2 = Request.QueryString("dir") 'Имя получаем из URL

'curr_dir - полный физический путь к текущей папке. Получается конкатенацией строк, 'содержащихся в переменных root_folder и curr_dir2.

curr_dir = root_folder & curr_dir2

'temp_arr - временный массив

'Получаем массив, содержащий названия каталогов текущей папки.

temp_arr = ShowDirList(curr_dir)

'Сортируем массив строк

temp_arr = SortStr(temp_arr)

%>

<table border=0>

<%

'Вызов процедуры, осуществляющей вывод названий подкаталогов текущего каталога.

Call Main_Print(temp_arr,1)

'Получаем массив, содержащий имена файлов текущей папки.

temp_arr = ShowFilesList(curr_dir)

'Сортируем массив строк

temp_arr = SortStr(temp_arr)

'Вызов процедуры, осуществляющей вывод имен файлов текущего каталога.

Call Main_Print(temp_arr,0)

%>

</table>

<%

'Очистка содержимого массива

Erase temp_arr

Далее следует текст функций и процедур, используемых в сценарии.

Функции: ShowFilesList - возвращает массив, содержащий имена файлов текущей папки.

ShowDirList - возвращает массив, содержащий названия каталогов текущей папки.

SortStr - сортирует массив строк.

Процедура: Main_Print - осуществляет вывод в HTML-формате содержимое текущего каталога.

Продолжение листинга файла list_files.asp:

 

Function ShowFilesList(folder)

Dim fs, f, f1, fc, i

'Определяем динамический массив для хранения имен файлов

ReDim farr(0)

'Создаем объект FileSystemObject

Set fs = CreateObject("Scripting.FileSystemObject")

Set f = fs.GetFolder(folder)

Set fc = f.Files

i=0

'В цикле заполняем массив именами файлов текущей папки

For Each f1 In fc

farr(i) = LCase(CStr(f1.Name)) 'Преобразуем имя к нижнему регистру символов

i = i + 1

'Увеличение размера массива

ReDim Preserve farr(i)

Next

'Возвращаем результат

ShowFilesList = farr

End Function



 

Function ShowDirList(folder)

Dim fs, f, f1, fc, i

'Определяем динамический массив для хранения названий каталогов

ReDim dirarr(0)

Set fs = CreateObject("Scripting.FileSystemObject")

Set f = fs.GetFolder(folder)

Set fc = f.SubFolders

i=0

'В цикле заполняем массив именами каталогов текущей папки

For Each f1 In fc

dirarr(i) = LCase(CStr(f1.Name))

i = i + 1

ReDim Preserve dirarr(i)

Next

'Возвращаем результат

ShowDirList = dirarr

End Function

 

 

Function SortStr(arr)

Dim t,i,j

'Сортировка методом "пузырька"

'UBound - возвращает верхний индекс массива

For j = 0 To UBound(arr)-1

For i = j + 1 To UBound(arr)-1

'StrComp - сравнивает две строки

'Возвращает "-1", если строка1 < строка2; "0", если строка1=строка2; "1", если строка1 >

' строка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 "<tr>" 'Вывод HTML

'Для украшения используем графический файл open.gif - изображение открытой папки.

Response.Write "<td><img src='open.gif'></td>"

'Формируем ссылку на верхний каталог

Response.Write "<td><a href='list_files.asp?dir=" & tmp & "'>" & " .. " & "</a></td></tr>"

End If

End If

'Основной цикл вывода названий каталогов

For i = 0 To UBound(arr)-1

Response.Write "<tr>"

Response.Write "<td><img src='close.gif'></td>"

Response.Write "<td><a href=' list_files.asp?dir=" & curr_dir2 & "\" & arr(i) & "'>" & arr(i) & _

"</a></td></tr>"

Next

'Вывод имен файлов

Case 0

'Основной цикл вывода имен файлов

For i = 0 To UBound(arr)-1

Response.Write "<tr>"

Response.Write "<td><img src='doc.gif'></td>"

'Заменяем "\" на "/" для использования в URL

'Атрибут target нужен для указания ссылки на фрейм

Response.Write "<td><a href='" & root_vfolder & Replace(curr_dir2,"\","/") & "/" & arr(i) & _

"' target='main'>" & arr(i) & "</a></td></tr>"

Next

End Select

End Sub

%>

</BODY>

</HTML>

 

Далее необходимо написать страницу menu.htm, содержащую два фрейма, как было показано выше. Листинг приведен ниже:

 

<HTML>

<HEAD>

</HEAD>

<FRAMESET COLS="150,*">

<FRAME NAME="contents" SRC="list_files.asp">

<FRAME NAME="main" SRC="empty.htm">

</FRAMESET>

</HTML>

 

Файл empty.htm представляет собой пустой файл-заглушку для корректного отображения страницы в браузере Netscape Navigator.

 

<!-empty.htm 

<HTML>

</HTML>

 

Файлы list_files.asp, menu.htm, empty.htm необходимо поместить в каталог на Web-сервере с правом Script.

Далее в браузере набираем, например, http://localhost/scripts/menu.htm

Пример работы скрипта приведен на Рис.2.

Рис.2.

Исходный файл проекта прилагается: files.zip

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://www.activex.net.ru/



1. Реферат Войновичи
2. Реферат Організаційні вміння і навички
3. Статья Використання та облік вексельного обігу в Україні, його контроль, значения в діяльності підрпиємства
4. Реферат на тему Steroids Essay Research Paper Steroids It is
5. Реферат Нормативно- правовое регулирование предстоящей профессиональной деятельности
6. Реферат на тему Cloning Essay Research Paper Cloning Recently we
7. Реферат на тему Abortion Should Not Be Legal Essay Research
8. Реферат на тему Nelle Harper Lee Essay Research Paper Nelle
9. Реферат на тему Загальні питання антропосоціогенезу
10. Статья Дети Индиго в вашем доме