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

2016-08-02СтудИзба

Описание файла

Документ из архива "Представление в Internet содержимого каталога средствами ASP", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "45761"

Текст из документа "45761"

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

'Отключаем кэширование страницы

<%

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)

%>

<%

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

Call Main_Print(temp_arr,1)

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

temp_arr = ShowFilesList(curr_dir)

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

temp_arr = SortStr(temp_arr)

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

Call Main_Print(temp_arr,0)

%>

<%

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

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.

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

" 'Вывод HTML

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

Response.Write "

"

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

Response.Write "

"

End If

End If

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

For i = 0 To UBound(arr)-1

Response.Write "

"

Response.Write "

"

Response.Write "

""

Next

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

Case 0

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

For i = 0 To UBound(arr)-1

Response.Write "

"

Response.Write "

"

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

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

Response.Write "

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 "

" & " .. " & "
" & arr(i) & _
" & arr(i) & ""

Next

End Select

End Sub

%>

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

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

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

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

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

Рис.2.

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

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

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

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5173
Авторов
на СтудИзбе
436
Средний доход
с одного платного файла
Обучение Подробнее