Бесплатные Рефераты >>> Информатика, Программирование  



 

 

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

 

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

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

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

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

Рис. 1.

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

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

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

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

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

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

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

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


 


 

Архівація файлів та створення архіватора текстових файлів
Міністерство освіти і науки України Черкаський національний університет ім. Б. Хмельницького Факультет інформаційних технологій та біомедичної кібернетики Курсова...

САПР
ПРИНЦИПЫ ПОСТРОЕНИЯ САПР Различные возможности и границы применения вычислительной техники для автоматизации проектирования определяются уровнем формализации научно- технических знаний в конкретной отрасли. Чем глубже разработана...

Классификация компьютеров
МИНИСТЕРСТВО КУЛЬТУРЫ РФ ВОСТОЧНО-СИБИРСКАЯ ГОСУДАРСТВЕННАЯ АКАДЕМИЯ КУЛЬТУРЫ И ИСКУССТВ Кафедра АИС Курсовая работа на тему: “Классификация компьютеров” Выполнена студентом II курса очного отделения 423...

Трансформаторы
ПРОФЕССИОНАЛЬНЫЙ ЛИЦЕЙ №4 «Трансформаторы»         Выполнил: Комиссаров Д.В. Преподаватель: Антонова Т.А. г. Пенза 1999г. ПЛАН: 1....

Управление процессами
Управление процессами Вторым по значимости понятием в операционной системе (ОС) является понятие процесса. Процесс - сущность, которая определяется по-разному. Это может быть - “упорядоченный набор команд и принадлежащих ему ресурсов”....

Тестирование ППП автоматизации учета основных средств
Московский государственный университет сервиса Поволжский технологический институт сервиса Кафедра «Прикладная информатика в экономике» КОНТРОЛЬНАЯ РАБОТА по дисциплине «Разработка и применение ППП в экономике» на...

Концепции общей теории информации
Концепции общей теории информации Станислав Янковский 1. Общее понятие информации Слово "информация" известно в наше время каждому. Между тем вошло оно в постоянное употребление не так давно, в середине...

Операционная система LINUX
Самым популярным проектом UNIX-системы конца XX века стала недорогая альтернатива дорогостоящим (HP-UNIX, SUN Solaris, Digital UNIX) решениям - ОС Linux. Сегодня темпы освоения рынка данной системой по сравнению с остальными известными ОС...

Графическая нотация для документирования информационной архитектуры и взаимодействий пользователя с веб-сайтом
Графическая нотация для документирования информационной архитектуры и взаимодействий пользователя с веб-сайтом Джесс Джеймс Гарретт Одним из способов представления информационной архитектуры и взаимодействий ...

Язык программирования Паскаль и ветвление
Введение. Язык Паскаль был создан как учебный язык программирования в 1968 –1971г. Никлаусом Виртом. В настоящее время этот язык имеет более широкую сферу применения, чем предусматривалось при его создании. Целью работы Вирта было ...

Циклические коды
АП-97161 АННОТАЦИЯ Документ содержит описание программы, которая строит кодовые комбинации на основе циклических кодов. Программа кодирует и деко-дирует информационные слова. Иммитируется работа источника, переда-ющего ...