2008-12-06 4 views
9

Nicht sicher, wie genau diese Frage zu formulieren ist ... also Änderungen sind willkommen! Wie auch immer ... hier geht es.Wie wird der Name der Datei festgelegt, wenn ein Pdf in einem Browser gestreamt wird?

Ich verwende derzeit Crystal Reports, um Pdfs zu generieren und streame die Ausgabe einfach an den Benutzer. Mein Code sieht wie folgt aus:

System.IO.MemoryStream stream = new System.IO.MemoryStream(); 

stream = (System.IO.MemoryStream)this.Report.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); 

this.Response.Clear(); 
this.Response.Buffer = true; 
this.Response.ContentType = "application/pdf"; 
this.Response.BinaryWrite(stream.ToArray()); 
this.Response.End(); 

Nachdem dieser Code läuft es Pdf zum Browser Öffnung Acrobat Reader-Streams. Funktioniert super!

Mein Problem ist, wenn der Benutzer versucht, die Datei zu speichern, wird standardmäßig der tatsächliche Dateiname ... in diesem Fall ist standardmäßig CrystalReportPage.pdf. Kann ich das überhaupt einstellen? Wenn das so ist, wie?

Jede Hilfe wäre willkommen.

Antwort

17

Regel über den Content-Disposition-Header - dh

Content-Disposition: inline; filename=foo.pdf 

So verwenden nur Headers.Add oder AddHeader, oder was auch immer es ist, mit:

response.Headers.Add ("Inhalt -Disposition "," inline; Dateiname = foo.pdf ");

(inline ist "Show in Browser", Anhang ist "als Datei speichern")

7
System.IO.MemoryStream stream = new System.IO.MemoryStream(); 

stream = (System.IO.MemoryStream)this.Report.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); 

this.Response.Clear(); 
this.Response.Buffer = true; 
this.Response.ContentType = "application/pdf"; 
this.Response.AddHeader("Content-Disposition", "attachment; filename=\""+FILENAME+"\""); 
this.Response.BinaryWrite(stream.ToArray()); 
this.Response.End(); 
Verwandte Themen