Binärdaten per ASP .NET an den Browser senden
In diesem MSDN Quickie erfahren Sie, wie Sie binäre Dateien per ASP.NET an einen Browser senden können. Im Beispiel wird eine PDF-Datei direkt an den Browser geschickt.
Um eine Binärdatei als solche an einen Browser selber senden zu können (denken Sie etwa an eine direkt im Browser betrachtbare PDF-Datei) reicht es nicht, diese schlicht als Hyperlink auf eine entsprechende Datei anzugeben. In diesem Fall würde die Datei auf Benutzerseite schlicht zum Herunterladen angeboten.
Die Angabe eines zusätzlichen Headers für den MIME-Inhaltstyp der Binärdaten ist daher erforderlich. Mit ASP.NET können Sie das sehr einfach erreichen.
Starten Sie dazu Visual Studio .NET und wählen Sie als Projekttyp eine ASP .NET-Webanwendung - nennen wir sie "BinPost". Visual Studio .NET sollte Ihnen nun eine entsprechende Anwendungsvorlage präsentieren.
Über den Menüpunkt "Datei" - "Vorhandenes Element hinzufügen" fügen Sie diesem Projekt nun eine PDF-Datei hinzu. Benennen Sie bitte die hinzugefügte PDF-Datei Ihrer Wahl im Projektmappen-Explorer um - nicht, weil dies technisch notwendig wäre, sondern damit Sie den folgenden Beispielcode einfacher nachvollziehen können. Der Code verwendet den Namen PDFDatei.pdf, benennen Sie die Datei also bitte entsprechend.
Fügen Sie dem Projekt nun eine neue WebForm hinzu (ändern Sie den Standardnamen von Webform1.aspx zu BinPost.aspx). Die neu hinzugefügte Webform sollte jetzt im Projektmappen-Explorer hierarchisch auf der gleichen Ebene wie die PDF-Datei liegen.
Wechseln Sie auf der neuen ASPX-Seite in die Codeansicht und fügen Sie dem Codemodul die folgenden Codezeilen für die Page_Load-Methode hinzu:
Private Sub Page_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.Load
' Den passenden Inhaltstyp für das Senden
' an den Browser festlegen
Response.ContentType = "Application/pdf"
' Den physikalischen Pfad zur Datei ermitteln
Dim FilePath As String = MapPath("PDFDatei.pdf")
' Die Datei per HTTP streamen:
Response.WriteFile(FilePath)
' Ende der Übertragung erklären
Response.End()
End Sub
Kompilieren Sie diese Web-Anwendung und surfen Sie die Seite BinPost.aspx von Ihrem Browser aus an (im Standardfall unter http://localhost/BinPost/BinPost.aspx). Vorausgesetzt, dass Ihr Browser mit dem Inhaltstyp "Application/pdf" etwas anfangen kann (was etwa beim Internet Explorer mit installiertem Acrobat Reader gegeben ist), können Sie die serverseitige Datei Ihrer Wahl nun direkt und ohne Rückfrage im Browser betrachten.
Bei andern Binärdateien müssen Sie die Inhaltstyp-Angabe im ContentType-Header ändern. Diese Angabe gliedert sich üblicherweise in das Format "Typ/Untertyp". Sehr gängige Angaben für MIME-Inhaltstypen sind beispielsweise:
"text/HTML" "image/GIF" "image/JPEG" "text/plain" "Application/msword" (Microsoft Word) "Application/msaccess" (Microsoft Access) "Application/x-msexcel" (Microsoft Excel)