Grazie all’oggetto File System (FSO) attraverso ASP possiamo creare diverse piccole e semplici applicazioni Web che gestiscono, in maniera più o meno complessa, file di qualsiasi tipo e natura.
La più bella applicazione che possiamo creare in ASP, sfruttando il File System di Windows (leggendolo con l’omonimo oggetto) è un File Manager, ovvero una simulazione dell’Esplora Risorse di Windows.
Di per se un File Manager è un’applicazione che prevede anche la cancellazione, la copia, lo spostamenti di file ed altre operazioni dinamiche. L’esempio che tratteremo in questo articolo si limita a leggere il contenuto delle directory al di sotto della partizione C:\ ed i rispettivi file in esse contenuti.
Tratteremo solo la lettura della partizione C:\ non come una limitazione, ma per un semplice motivo: un “esplora risorse” di fatto non trova un riscontro pratico nell’ambito di un’applicazione Web, a meno che non si decida di implementare un potente software da rivendere, e non è questa la sede per imparare a fare del business…
Struttura del progetto
Il progetto per la creazione del nostro File Manager ha una struttura molto semplice; create la cartella filemanager sul vostro server Web personale; di seguito l’elenco dei file ASP che utilizzeremo per l’applicazione con relativa spiegazione.
- index.asp – è il file che contiene, in un frameset composto da due frame verticali, i file descritti di seguito;
- menu.asp – contiene l’elenco delle directory e dei file dell’Hard Disk che ospita lo script;
- corpo.asp – visualizza i contenuti delle directory principali dell’Hard Disk.
A breve esamineremo nel dettaglio questi file.
Le immagini del progetto
Al fine di avere una buona ottica dell’output che ci verrà restituito, ci conviene utilizzare dei file immagine che raffigurino icone dei file di diverso tipo. Le immagini potete crearle da voi, è davvero molto semplice: aprite una directory contenente un gran numero di file di diverso tipo ed impostate la visualizzazione ad elenco o dettaglio; in questo modo avrete le icone dei di dimensioni 20 X 20 pixel all’incirca.
Fate una stampa della schermata col tasto [Print Screen] o [Print RSist] ed incollate il tutto in Paint. Salvate le singole immagini in diversi file in formato BMP e poi, col vostro programma di grafica preferito, salvate tutto in formato GIF.
L’immagine raffigurante una cartella chiamatela “cartella.gif” mentre le icone dei file salvatele come segue:
- File immagine HTML = html.gif e htm.gif
- File immagine ASP = asp.gif
- File immagine php = php.gif
- File immagine GIF = gif.gif
- File immagine JPEG = jpg.gif
e cosi via. Disponete il tutto nella cartella di prova del File manager.
Il file principale: index.asp
Di seguito il codice HTML del file “index.asp”, contenitore materiale dell’applicazione
<%@LANGUAGE = VBScript%>
<html>
<head>
<title>File Manager</title>
</head>
<frameset cols="20%,*">
<frame src="menu.asp" name="menu">
<frame src="about:blank" name="corpo">
</frameset>
</html>
Si tratta di un file HTML semplice senza nessun codice ASP, ma conviene tenerlo in formato ASP piuttosto che HTML.
Un po di stile non guasta: style.css
Come dal titolo… vediamo il codice CSS dell’applicazione, da salvare nel file “style.css” che andrà a sua volta salvato nella directory di prova del progetto
body
{
margin: 5px;
}
td, p
{
font: Normal 10px Verdana;
}
a
{
color: #000000;
}
Il menu dell’applicazione: menu.asp
Il frame di sinistra contiene, come già detto in precedenza, il menu di navigazione dell’applicazione; tecnicamente si tratta solo di un assaggio del complesso utilizzo del File System Object che faremo per la creazione del nostro File Manager in ASP.
Vediamo il codice:
<%@LANGUAGE = VBScript%>
<%
Dim fso
Set fso = Server.CreateObject("Scripting.FileSystemObject")
%>
<html>
<head>
<title>File Manager</title>
<link rel="stylesheet" type="text/css" href="style.css">
<base target="corpo">
</head>
<body>
<table>
<%
Dim unita
Set unita = fso.GetFolder("C:\")
For Each File In unita.SubFolders
%>
<tr>
<td valign="top"><img src="cartella.gif"></td>
<td valign="top" nowrap>
<a href="corpo.asp?cartella=<%=File.Name%>"><%=File.Name%></a>
</td>
</tr>
<%
Next
Set unita = Nothing
%>
</table>
</body>
</html>
<%
Set fso = Nothing
%>
Mi connetto al drive C: ed estraggo, con un ciclo, tutte le sottocartelle e le stampo a video, creando un link al file corpo.asp, che esamineremo nel prossimo paragrafo, accodando in querystring il nome della cartella corrente.
Il cuore dell’applicazione: corpo.asp
Siamo giunti alla fase più complessa dell’applicazione , il file corpo.asp, il cui compito è quello di leggere la cartella corrente immediatamente sotto al drive C: e di esaminare tutte le sottocartelle contenute, esponendo anche, senza link, i file contenuti ai quali verranno automaticamente associate le icone, come spiegato nei paragrafi precedenti.
Vediamo il codice:
<%@LANGUAGE = VBScript%>
<%
Dim cartella, sotto
cartella = Request.QueryString("cartella")
sotto = Request.QueryString("sotto")
Dim fso, percorso
Set fso = Server.CreateObject("Scripting.FileSystemObject")
percorso = "C:\" & cartella & "\" & sotto
%>
<html>
<head>
<title>File Manager</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<p><b>Cartella:</b> <%=percorso%></p>
<table cellpadding="1" cellspacing="0">
<tr bgcolor="#EEEEEE">
<td colspan="2"><b>Elemento</b></td>
<td colspan="2"><b>Tipo</b></td>
<td colspan="2"><b>Dimensione</b></td>
<td colspan="2"><b>Data creazione</b></td>
<td colspan="2"><b>Daya ultimo accesso</b></td>
<td colspan="2"><b>Data ultima modifica</b></td>
</tr>
<%
Function genera()
If sotto = "" Then
Response.Write File.Name
Else
Response.Write sotto & "\" & File.Name
End If
End Function
For Each File in fso.GetFolder(percorso).SubFolders
%>
<tr>
<td><img src="cartella.gif"></td>
<td>
<a href="corpo.asp
?cartella=<%=cartella%>
&sotto=<%Call genera()%>"><%=File.Name%></a>
</td>
<td>|</td>
<td><%=File.Type%></td>
<td>|</td>
<td><%=FormatNumber(File.Size, 0)%></td>
<td>|</td>
<td><%=File.DateCreated%></td>
<td>|</td>
<td><%=File.DateLastAccessed%></td>
<td>|</td>
<td><%=File.DateLastModified%></td>
</tr>
<%
Next
For Each File in fso.GetFolder(percorso).Files
%>
<tr>
<tr>
<td><img src="<%=fso.GetExtensionName(File.Name)%>.gif"></td>
<td>
<a href="<%=percorso & "\" & File.Name%>"
target="_blank"><%=File.Name%></a>
</td>
<td>|</td>
<td><%=File.Type%></td>
<td>|</td>
<td><%=FormatNumber(File.Size, 0)%></td>
<td>|</td>
<td><%=File.DateCreated%></td>
<td>|</td>
<td><%=File.DateLastAccessed%></td>
<td>|</td>
<td><%=File.DateLastModified%></td>
</tr>
</tr>
<%
Next
%>
</table>
</body>
</html>
<%
Set fso = Nothing
%>
Di seguito un’immagine che mostra un potenziale output dell’applicazione, una volta eseguito all’interno del vostro browser Web

