ASPcenter.net

24 febbraio 2010

Un file manager in ASP

Archiviato in: Gestione File — Tag:, , , — lukeonweb @ 11:54

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

Nessun commento »

Non c'è ancora nessun commento.

RSS feed dei commenti a questo articolo. TrackBack URL

Lascia un commento

ASPcenter.net è il blog italiano su ASP, ASP.Net, VB.Net, C# e Visual Studio - Funziona con WordPress