Spesso capita di mettere a disposizione dei propri utenti una serie di documenti non in formato HTML, ma ad esempio in formato MS Word, MS Excel, PDF o file immagine. uesti documenti finiscono per aprirsi nel browser dell’utente, dando vita a formattazioni improbabili e sovraccarico di lavoro per il browser che potrebbe impallarsi.
A porre rimedio pensa ADO (ActiveX Data Object) che, contrariamente alle credenze popolari, non serve solo all’interfaccia con i database, ma anche a trattare altri tipi di dati, come nel caso dell’interazione con i file con ADODB.Stream.
Il suo utilizzo è molto semplice e immediato: si dichiara un nuovo oggetto, si imposta il tipo, si carica il file desiderato, si impostano le normali intestazioni ASP e si distrugge l’oggetto.
Si crei il file download.asp che, privo di interfaccia, recupera in una querystring il file che si desidera scaricare e non visualizzare. Il codice è opportunamente commentato
<%@LANGUAGE = VBScript%>
<%
' Recupero il file da scaricare
Dim download, F
F = Request.QueryString("file")
' Creo l'oggetto ADODB.Stream
Set download = Server.CreateObject("ADODB.Stream")
' Apro la connessione e carico il file
download.Type = 1
download.Open
download.LoadFromFile Server.MapPath(F)
' Aggiungo le intestazioni del tipo di file
Response.AddHeader "Content-Disposition", "attachment; filename=" & F
Response.ContentType = "application/octet-stream"
Response.BinaryWrite download.Read
' Un po di pulizia...
download.Close
Set download = Nothing
%>
A questo punto, puntando a questo file, possiamo scaricare tutti i documenti che vogliamo scrivendo un link del tipo
<a href="download.asp?file=documento.doc">Documento Word</a>
