preload
Nov 27

Quando un documento viene generato a run-time in una pagina ASP o ASP.NET per essere inviato al client, per esempio perchè viene recuperato da un database o da un’altra locazione, la proprietà ContentType dell’oggetto Response viene solitamente impostata con un valore che identifica il tipo del formato (tipo MIME). La proprietà menzionata corrisponde al parametro Content-Type dell’header della risposta HTTP.


'Documento PDF
Response.ContentType = "application/pdf"

'Archivio ZIP
Response.ContentType = "application/zip"

'Documento MS Word
Response.ContentType = "application/msword"

'Documento MS Excel
Response.ContentType = "application/vnd.ms-excel"

'Filmato ASF
Response.ContentType = "video/x-ms-asf"

'Filmato AVI
Response.ContentType = "video/avi"

'Filmato MPEG
Response.ContentType = "video/mpeg"

'Audio WAV
Response.ContentType = "audio/wav"

'Audio MP3
Response.ContentType = "audio/mpeg3"

'Immagine GIF
Response.ContentType = "image/gif"

'Immagine JPG
Response.ContentType = "image/jpeg"

'Formato binario generico
Response.ContentType = "application/octet-stream"

Quando un documento viene inviato al client, questo viene automaticamente aperto se il formato viene riconosciuto e associato ad un programma installato localmente.
Per evitare l’apertura automatica del documento, lasciando all’utente finale la scelta se aprire o salvare il file, occorre impostare anche il parametro Content-Disposition dell’header della risposta HTTP con il valore attachment, specificando inoltre il nome del file completo di estensione.

Response.AppendHeader("Content-Disposition", "attachment; filename=" & fileName)

Articolo tratto dal sito aspitalia.com

Oct 05

Una delle problematiche più diffuse quando si realizza un sito con protezione, è gestire i download di file e documenti autorizzandolo ai soli utenti abilitati o a seconda di regole personalizzate. Se i file o i documenti risiedono in una cartella del sito, facilmente vi è possibile accedervi da browser una volta “scoperto” il nome del file. Per evitare questo, è sufficiente scrivere una pagina asp che si occupi di verificare se l’utente può o meno accedere al file.
In caso affermativo, il file verrà inviato al client.


<%
Function ReadBinaryFile(FileName)Const adTypeBinary = 1'Create Stream object
Dim BinaryStream
Set BinaryStream = CreateObject("ADODB.Stream")'Specify stream type - we want To get binary data.
BinaryStream.Type = adTypeBinary

'Open the stream
BinaryStream.Open

'Load the file data from disk To stream object
BinaryStream.LoadFromFile FileName

'Open the stream And get binary data from the object
ReadBinaryFile = BinaryStream.Read

End Function

'Logica di gestione
'Verifico se l'utente può accedere al file e setto BlnOK a True o a False
BlnOK = True

If BlnOK Then
Response.Buffer = True
Response.BinaryWrite ReadBinaryFile(Session("File"))
Else
Response.Write "Errore!"
End If

%>

Utilizzando le variabili di sessione, si passa il nome del file. All’interno della sezione Logica di gestione si concede o meno il download. La funzione ReadBinaryFile leggerà dal filesystem del server il file (che può essere anche in una posizione di rete, purchè accedibile e leggibile dall’utente con cui lavora il sito su IIS) e lo invierà al client con la funzione Response.BinaryWrite.