La visualizzazione dinamica di immagini, o la protezione delle stesse, può essere filtrata da uno script lato server implementabile in ASP.
Immaginiamo quindi di voler visualizzare delle immagini dinamicamente attraverso dei parametri di tipo querystring e di voler utilizzare un file ASP direttamente all’interno del Tag HTML per la gestione delle immagini stesse.
Avremo, ad esempio, un codice HTML del genere:
<img src="immagini.asp?img=1">
Partiamo comunque dal concetto di base, ovvero l’utilizzo di ASP come filtro per la visualizzazione di un’immagine, quindi dal codice:
<img src="immagini.asp">
senza alcun parametro.
Utilizzeremo il seguente codice nel file immagini.asp:
<%@LANGUAGE = VBScript%>
<%
Response.ContentType = "image/GIF"
Dim immagine
Set immagine = Server.CreateObject("ADODB.Stream")
immagine.Open
immagine.Type = 1
immagine.LoadFromFile Server.MapPath("immagine.gif")
Response.BinaryWrite immagine.Read
immagine.Close
Set immagine = Nothing
Response.End
%>
Commentiamo i passaggi che ne compongono la struttura.
Dichiaro innanzitutto il tipo di documento, assegnandogli il valore image/GIF, ovvero imposto a tutti gli effetti il file ASP come se fosse un’immagine di tipo GIF.
A questo punto apro uno stream attraverso ADO, sfruttando la classe ADODB.Stream. Apro la connessione al file, imposto la connessione in lettura (utilizzando il cursore 1), carico l’immagine, chiudo la connessione e ripulisco l’oggetto.
Non resta che terminare con forza l’esecuzione della pagina.
Torniamo alla dinamizzazione dell’applicazione. Modifichiamo il codice appena presentato e commentato aggiungendo il recupero della querystring e passando dinamicamente il nome del file all’esecuzione del caricamento dell’immagine:
<%@LANGUAGE = VBScript%>
<%
Dim img
img = Request.QueryString("img")
Response.ContentType = "image/GIF"
Dim immagine
Set immagine = Server.CreateObject("ADODB.Stream")
immagine.Open
immagine.Type = 1
immagine.LoadFromFile Server.MapPath(img & ".gif")
Response.BinaryWrite immagine.Read
immagine.Close
Set immagine = Nothing
Response.End
%>
Per maggiore chiarezza le modifiche sono state evidenziate in grassetto.
