hitexchange sponsor barhitexchange.ru - WEB AD NETWORK

!!! Работает только с IIS 4.0 !!!

   Вернутся обратно   
К разделу О чем эта статья
К разделу На что это похоже
К разделу Установка
К разделу Пример
О чем эта статья Наверх
    Эта статья поможет Вам создать файловый архив. Файловый архив выполняет две вещи. Во-первых это позволит WEB администратору, распределять доступ к файловому архиву и изменять его без исправлений в WEB сайте. Во-вторых, такой представление архива защитит от просмотра пользователями структуру каталогов, и позволит администратору WEBа давать им дополнительные инструкции. В отличие от неуклюжего readme.txt файла (используется при простом FTP). Наконец, файловое хранилище только предлагает встроенному файлу расширения для download,защищая имя других расширений на запросе администраторов паутины.
    В данном примере используется Объект FileSystem доступный в Internet Information Server версии 4.0, который позволяет просмотреть каталог на жестком диске (для файлов определенного типа), с помощью Активных страниц.
На что это похоже? Наверх
Каждый динамический каталог, показываемый через сценарий ASP генерируется из запрошенного поддиректория. Скрипт может работать с одним или многими подкаталогами размещенными в указанной директории.

Так это будет выглядеть на клиентской стороне

Приложение должно быть прозрачным для пользователя. Для человека, который хочет загрузить файл из файлового архива интерфейс будет выглядеть как простая HTML страница.
Установка Наверх
     Для работы, этого скрипта, надо создать директорий в Вашем WEBе и сделать его виртуальным директорием FTP. а также установить права чтения. Тут будет хранится страница по умолчанию и вся нужная графика.
     В этом каталоге создаются подкаталоги (сколько угодно с различными архивами).
     Надо создать еще один каталог с правами выполнения скриптов Этот директорий будет содержать Активную страницу Сервера, на которую пользователь попадает для просмотра файлового архива. Должен существовать лишь один ASP файл, с именем dir.asp, для всех вариантов показа архива. Входной параметр определяет в каком виде , откуда и что показывать пользователю.
     Следуйте этим инструкциям для создания директория (имена можно давать свои - в этом случае придется менять в исходнике).

  1. Создаем каталогrepository в c:\inetpub\
  2. Создаем второй каталог внутри repository c именем scripts.
  3. Даем каталогу scripts права на выполнение скриптов.
  4. Создаем второй каталог внутри repository c именем files
После этого можно разместить dir.asp (см Пример) в директории scripts.

Пример Наверх

<%
if request.QueryString("path")="" then
  response.redirect("no_path.htm")
end if

subDir=request.QueryString("path")
%><html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Directory Listing</title>
</head>

<body bgcolor="#FFFFFF">

<% 
if request.QueryString("title")="" or _
isEmpty(request.QueryString("title")) then
%>
<h2 align="center"><%=subDir%></h2><br>
<%else%>
<h2 align="center"><%=request.QueryString("title")%></h2><br>
<%end if%>

<hr>

<p><font size="2">Please click once on the description of the
file that interests you. A dialog box will pop up asking:
"What do you want to do with this file?
" Select "<strong>open it</strong>."
The file will be downloaded and your application will open.
From here you may view it, print it, or
save it (using the "<strong>save as...</strong>"
option) to your hard drive.</font><br>
</p>


<hr>
<div align="center"><center>

<table border="0" cellpadding="6" cellspacing="0" width="550">
    <%
Set fileIO = CreateObject("Scripting.FileSystemObject")
    
path=Server.Mappath("/") 
    path=path & subDir 


    Set Dir=fileIO.GetFolder(path)
    Set FileCollect=Dir.Files
    For Each item in FileCollect
      Fsize=item.size
Fname=item.name
      FileName=split(Fname,".",2)
title=FileName(0)
short_title=split(title,"_",2)
  
      link="../../" & subdir & FName
    %>
     <tr>
       <% select case FileName(1)
   Case "html"%>
         <td align="center">
         <img src="../icons/html.gif" width="32" height="32" border="0">
 </td>
<td align="default"><strong>
<a href="<%=link %>">
         <%=short_title(1)%></a>
         </strong></td>
         <td align="right"><%=Fsize%> bytes</td>

    <% Case "doc"%>
         <td align="center">
         <img src="../icons/word.gif" width="32" height="32" border="0">
 </td>
 <td align="default"><strong>
 <a href="<%=link %>">
         <%=short_title(1) %></a>
         </strong></td>
         <td align="right"><%=Fsize%> bytes</td>

    <% Case "xls"%>
         <td align="center">
         <img src="../icons/excel.gif" width="32" height="32" border="0">
 </td>
 <td align="default"><strong> 
         <a href="<%=link %>"><%=short_title(1) %></a>
         </strong></td>
         <td align="right"><%=Fsize%> bytes</td>

    <% Case "exe"%>
 <td align="center">
 <img src="../icons/pkzip.gif" 
         width="32" height="32" border="0"></td>
 <td align="default"><strong> 
         <a href="<%=link%>"><%=short_title(1) %></a>
         </strong></td>
         <td align="right"><%=Fsize%> bytes</td>
    <% end select %>
    </tr>
<%
Next
set fileIO=Nothing
%>
</table>
</center></div>
</body>
</html>

     Скрипт начинает свою работу с проверки - существует ли заданный каталог. Имя этого каталога используется для того , чтобы сделать ссылку на требуемый подкаталог каталога files. Если он существует, то dir.asp покажет все файлы заданной директории. Для этого из вызывающеей страницы обязательно должна передаваться переменная "Path" c указанием URL требуемого каталога. В противном случае происходит переадресация на файл no_path.htm размещаемый в каталоге repository(см пример в конце статьи).
     Также в качестве параметра можно передавать переменную (title) с заголовком страницы. Ниже приводится пример вызова dir.asp с заданием показать содержимое каталога /lizards/Big/ и с заголовком "Это каталог BIG":

<a href="dir.asp?title=Это+Каталог+BIG&path=%5Crepository%5Cfiles%5Clizards%5Cbig">Каталог BIG</a>

Внимание Слэши передаются в виде %5C а пробелы в виде‘+’ .
     Если переменная с заголовком страницы не передана то , по умолчанию в качестве заголовка используется указанный путь. После показа заголовка страницы и вывода соответствующих комментариев скрипт приступает к созданию объекта FileSystemObject
Set fileIO = CreateObject("Scripting.FileSystemObject")

     Метод Сервер.Mappath("/") возвращает физический маршрут в wwwroot директории сервера. Объект директория затем извлекается с помощью метода GetFolder объекта file system с соответствии с правами доступа к файлам.
     Now all that is left to do is iterate through the file collection with the For Each loop and identify the files and their properties. For convenience the extension of the file is removed to be later replaced with a graphical icon identifying a known file type. Note that the split function parses the string and inserts its separated parts into an array. We use the Select case structure to check for expected file extensions and display the appropriate icon next to those files.
     Далее с помощью цикла For выводим на экран имена файлов (расширения удаляются) т.к. вместо них будет соответствующая иконка (см Select case).
   Вернутся обратно