 |
Sesta Lezione
Sommario:
Lettura e scrittura di Files nel server Web:
- Inclusioni lato server
- Server execute
- Aprire e leggere i files
- Scrivere files sul server
Inclusioni lato server
Abbiamo già fatto cenno alla possibilità di richiamare in una pagina un'altra pagina mediante un file include.
Supponiamo, ad esempio, di aver scritto in una pagina salvata con il nome barraNavigaz.htm, questo:
<a href = "index.htm">Home
Page</a> |
<a href = "forum.asp">Forum</a> |
<a href = "contatti.htm">Contatti |
possiamo richiamare questa pagina in un'altra mediante la seguente istruzione inserita nel punto in cui occorre:
<!--#include file = "barraNavigaz.htm"-->
in tale maniera verrà visualizzato l'output di barraNavigaz.htm nella nuova pagina. Va da sè che che servirsi di questi files di inclusione per i casi ripetitivi fa
risparmiare molto tempo e memoria.
Server execute
I files include
non possono essere inseriti dentro un listato asp (in una pagina asp sì, ma
fuori dei tags <% %>). Se si presenta la necessità di richiamare un file
all'interno del listato asp occorre servirsi dell'istruzione Server.Execute.
Facciamo un esempio:
<%
Response.Write "Sono nella pagina 1 <br>"
Server.Execute "pagina2.asp"
Response.Write "Sono di nuovo nella pagina 1"
%>
Salvate questa pagina come pagina1.asp. Poi scrivete quest'altra e salvatela come pagina2.asp:
<%
Response.Write "Sono nella pagina 2 <br>"
%>
L'output è il seguente:
Sono nella pagina 1
Sono nella pagina 2
Sono di nuovo nella pagina 1
La seconda linea di pagina1.asp ha eseguito il comando della pagina 2 ma ha mantenuto il controllo del listato e così può eseguire la terza linea.
Se avete dubbi sull'utilità di questa istruzione, chiedeteci chiarimenti nel forum.
Aprire e leggere i files
Vi diciamo subito che per creare, aprire, leggere e scrivere i files nel server occorre che i files siano posti in cartelle che abbiano
i permessi di lettura e scrittura. Dette cartelle nei server host sono generalmente quelle denominate "public" o "cgi-bin".
Aggiungiamo anche che si parla di files testo e, comunque, non binari.
Premettiamo che, da ora in poi, useremo molto gli oggetti di cui abbiamo parlato nella lezione 4: alcuni sono oggetti interni che hanno
già una loro denominazione, altri sono esterni e dobbiamo inizializzarli noi. Può darsi che la sintassi dei listati vi
resti un po' difficoltosa. Tuttavia non possiamo, per ogni istruzione, addentrarci molto a lungo per ovvie ragioni di spazio. Significa
che, dove avete qualche problema, cercheremo di chiarirlo nel forum. In ogni caso, dal contesto generale del listato, il tutto dovrebbe
tornare chiaro.
Occorre innanzi tutto preparare il server a interagire con i files mediante l'istruzione "Scripting.FileSystemObject",
poi indicare il percorso in cui si trova il files sul server (l'istruzione relativa è "Server MapPath(percorso)")
e infine aprire, se già esiste, il files con l'istruzione OpenTextFile(percorso, 1). Il parametro numerico che si inserisce dopo "percorso," indica con
1 un'apertura del file per leggere, con 2 per scrivere, con 8 per aggiungere testo alla fine del file.
Voi, per prova inserirete, nella dir public, un file che salverete come fileProva.txt.
Esempio
(chiariamo in anticipo che con FSO intendiamo FilesSistemOpen):
<%@ LANGUAGE=VBSCRIPT %>
<% Option Explicit %>
<HTML>
<BODY>
<%
Dim objOpenFile, objFSO, strPath
strPath = Server.MapPath("public/prova.txt")
Set objFSO = _
Server.CreateObject("Scripting.FileSystemObject")
Set objOpenFile = _
objFSO.OpenTextFile(strPath, 1)
Do While Not objOpenFile.AtEndOfStream
Response.Write objOpenFile.ReadAll & "<BR>"
Loop
objOpenFile.Close
Set objOpenFile = Nothing
Set objFSO = Nothing
%>
</BODY>
</HTML>
Analisi:
Dimensioniamo le tre valiabili: una var. stringa e due var. oggetto, assegniamo
loro i valori di cui alle linee da 2 a 4; inseriamo in un loop Do while...Loop
la lettura del file; in sostanza scriviamo: "Finchè ObjOpenFile ha del contenuto [la proprietà dell'oggetto di tipo txt stream denominata AtEndStream
lo consente (cioè, finchè il suo contenuto è true il loop continua)], leggi
il contenuto di tutto il file (ReadAll è un'altra proprietà di detto file txt).
Una volta effettuata la lettura è buona norma chiudere ed annullare gli
oggetti, cosa che è sempre opportuno fare come vedremo in seguito (non ci
soffermiamo qui sulle ragioni di tale opportunità). Concludiamo: noterete che
il file appare senza la sua formattazione originale. Per far sì che la conservi
nella lettura, aggiungete, prima del loop, la linea: Response.Write "<PRE>".
Scrivere files sul server
Per scrivere un file, o in un file, si usa il metodo Write. Si può scrivere in un file nuovo (per crearlo v.
il listato precedente) oppure in un file esistente. Scriviamo questo listato:
<%@ LANGUAGE=VBSCRIPT %>
<% Option Explicit %>
<HTML>
<BODY>
<%
Dim objNewFile, objOpenFile, objFSO, strPath
strPath = Server.MapPath("../public/testo.txt")
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strPath) Then
Set objOpenFile = objFSO.OpenTextFile(strPath, 2)
else
Set objOpenFile = objFSO.CreateTextFile(strPath)
end if
objOpenFile.Write("Pippo ")
objOpenFile.WriteLine("è un personaggio di:")
objOpenFile.Write("Walt Disney.")
objOpenFile.Write("Sopra questa scritta vengono saltate due righe.")
objOpenFile.WriteBlankLines(3)
objOpenFile.WriteLine
objOpenFile.Write("Eseguito.")
objOpenFile.Close
Set objOpenFile = Nothing
Set objFSO = Nothing
%>
</BODY>
</HTML>
Analisi:
Dimensioniamo ed assegniamo i valori alle variabili. Controlliamo se il file esiste, altrimenti
creiamolo, dopodichè scriviamo "Pippo " con il solo metodo Write, poi
"è un personaggio di:" con il metodo WriteLine (che scrive nella
linea e va a capo), poi scriviamo tre linee bianche con il metodo
WriteBlankLines e così via fino a che vogliamo scrivere. Infine ricordiamoci di
distruggere, con Nothing, l'istanza dell'oggetto di tipo testo. Prima, però,
dobbiamo chiuderla (Close).
Se vi sono problemi su questa o su successive lezioni, comunicatecelo nel
forum oppure scriveteci.
Stampa questa pagina
|
 |