multipart/related in HttpResponse

04/03/2009 - 17:10 von JMan | Report spam
Hallo,

ist es möglich in asp.net einen multipart/related HttpResponse zu
realisieren? Die Idee ist es in einem HttpResponse etwas html/
javascript unterzubringen und zusàtzlich noch ein Pdf Dokument, das
der Browser dem Nutzer zum speichern anbieten soll. Ich habe
dazubisher nur ein recht altes asp Beispiel gesehen (http://
www.motobit.com/tips/detpg_multiple-files-one-request/) und bin auf
der Suche nach einem Asp.net Beispiel.

viele Grüße, JMan
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
04/03/2009 - 19:21 | Warnen spam
Hallo ?,

"JMan" schrieb:

ist es möglich in asp.net einen multipart/related HttpResponse zu
realisieren?



Bspw. über einen Handler (ASHX) kannst Du so ziemlich alles senden,
was das Herz begehrt.

Die Idee ist es in einem HttpResponse etwas html/
javascript unterzubringen und zusàtzlich noch ein Pdf Dokument, das
der Browser dem Nutzer zum speichern anbieten soll.



Und was soll das bringen? Liefer doch das PDF Doc per Handler aus,
den HTML und JavaScript Part ganz normal über eine Webform.

<%@ WebHandler Language="VB" Class="Download" %>

Imports System
Imports System.Web
Imports System.IO

Public Class Download : Implements IHttpHandler

Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest

Dim FilePath As String = ...
Dim FileName As String = Path.GetFileName( FilePath )

If File.Exists( FileName ) Then

context.Response.ContentType = "application/pdf"
context.Response.AddHeader( "Content-Disposition", "attachment;filename=" & FileName )
context.Response.TransmitFile( FilePath )

End If

End Sub

Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property

End Class

Der Link sieht dann in etwa so aus: <a href="Download.ashx">Download</a>. Falls Du
einen automatisierten Download erreichen willst, kannst Du auch per Metatag auf
den Handler umleiten (http://de.selfhtml.org/html/kopfdat...terleitung)
Der Browser bleibt dabei normalerweise auf der alten Seite und ein Downloaddialog
wird angezeigt.

Achte aber bitte darauf, dass die ungeprüfte Übernahme des Dateinamens gefàhrlich ist.
Du solltest daher noch eine Überprüfung einbauen, ob die Datei überhaupt angefordert
werden darf. Besser wàre wohl die Übergabe einer ID, anhand derer euer Skript dann den
richtigen Dateinamen ermitteln kann.

BTW: ASP.NET Fragen bitte zukünftig in der passenden NG stellen:

microsoft.public.de.german.entwickler.dotnet.asp

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen