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()
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.