рефераты
Главная

Рефераты по рекламе

Рефераты по физике

Рефераты по философии

Рефераты по финансам

Рефераты по химии

Рефераты по хозяйственному праву

Рефераты по цифровым устройствам

Рефераты по экологическому праву

Рефераты по экономико-математическому моделированию

Рефераты по экономической географии

Рефераты по экономической теории

Рефераты по этике

Рефераты по юриспруденции

Рефераты по языковедению

Рефераты по юридическим наукам

Рефераты по истории

Рефераты по компьютерным наукам

Рефераты по медицинским наукам

Рефераты по финансовым наукам

Рефераты по управленческим наукам

Психология и педагогика

Промышленность производство

Биология и химия

Языкознание филология

Издательское дело и полиграфия

Рефераты по краеведению и этнографии

Рефераты по религии и мифологии

Рефераты по медицине

Рефераты по сексологии

Рефераты по информатике программированию

Краткое содержание произведений

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

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

Христофоров Юрий

В этой статье я на примере расскажу, как используя ASP (Active Server Pages) можно построить содержимое каталога Web аналогично тому, как это выглядит на FTP сервере.

Постановка задачи: На Web-сервере есть каталог, например: C:InetPubwwwrootuser1. Пусть данный каталог имеет несколько вложенных каталогов и набор файлов в этих каталогах. Примерная структура папок представлена на Рис. 1.

Рис. 1. Представление в Internet содержимого каталога средствами ASP

В каждом из представленных на рисунке каталогах может находиться неограниченное количество файлов, либо некоторые из каталогов могут быть пустыми. Необходимо представить содержимое папки user1 на Web-странице в дружественном для пользователя виде.

Интересной особенностью скрипта является то, что применяя страницу с фреймами (кадрами), можно построить меню пользователя.

Результат должен выглядеть примерно следующим образом:

Находимся в папке C:Inetpubwwwrootuser1folder1subfolder2:

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

На данном скриншоте показан пример меню. Страница 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:inetpubwwwrootuser1"

'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. Представление в Internet содержимого каталога средствами ASP

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


© 2012 Рефераты, курсовые и дипломные работы.