#719 - Forzare il download di un documento da una pagina ASP.NET
Quando un documento viene generato a run-time in una pagina 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.
Ecco gli esempi relativi ad alcuni dei formati più comunemente usati:
'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.
L'esempio di seguito si riferisce al caso di un documento Excel generato a run-time ed inviato al client come attachment.
Dim sb As New System.Text.StringBuilder()
Dim output As String = String.Empty
Dim fileName As String = "ASPItalia.XLS"
'Crea una tabella con cinque righe e quattro colonne
sb.Append("<table>" & vbCrLf)
sb.Append("<tr>" & vbCrLf)
sb.Append("<td>Cella A1</td><td>Cella B1</td><td>Cella C1</td><td>Cella D1</td>" & vbCrLf)
sb.Append("</tr>" & vbCrLf)
sb.Append("<tr>" & vbCrLf)
sb.Append("<td>Cella A2</td><td>Cella B2</td><td>Cella C2</td><td>Cella D2</td>" & vbCrLf)
sb.Append("</tr>" & vbCrLf)
sb.Append("<tr>" & vbCrLf)
sb.Append("<td>Cella A3</td><td>Cella B3</td><td>Cella C3</td><td>Cella D3</td>" & vbCrLf)
sb.Append("</tr>" & vbCrLf)
sb.Append("<tr>" & vbCrLf)
sb.Append("<td>Cella A4</td><td>Cella B4</td><td>Cella C4</td><td>Cella D4</td>" & vbCrLf)
sb.Append("</tr>" & vbCrLf)
sb.Append("<tr>" & vbCrLf)
sb.Append("<td>Cella A5</td><td>Cella B5</td><td>Cella C5</td><td>Cella D5</td>" & vbCrLf)
sb.Append("</tr>" & vbCrLf)
sb.Append("</table>" & vbCrLf)
output = sb.ToString()
'Prepara e invia la risposta HTTP
Response.ContentType = "application/vnd.ms-excel"
Response.AppendHeader("Content-Disposition", "attachment; filename=" & fileName)
Response.Write(output)
Response.End()
Approfondimenti
- #935 - Sfruttare l'evento LoadComplete della pagina
- #962 - Template a gruppi per il controllo ListView
- #946 - Attributi per il supprto a design time di custom control con ASP.NET
- #957 - Le novità della WebForm in ASP.NET 3.5 SP1
- uno snippet per inserire riga di commento
- Modificare i CSS Friendly Control Adapters
- ASP.NET 3.5 Extensions: introduzione ad ASP.NET MVC
- Speciale Windows SharePoint Services
- #933 - Una GridView con supporto per più righe selezionabili
- #942 - Creare feed RSS e Atom con il .NET Framework 3.5
- #26 - HttpHandler per XAP non registrato in IIS
- #941 - Gestire al meglio gli eventi RowCommand di GridView e ItemCommand di DetailsView e FormsView con la classe DataControlCommands
Commenti
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Stampa
Snippet
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!