9

この質問の言い方が正確にわからない...編集を歓迎します!とにかく...ここに行きます。

私は現在、Crystal Reportsを使用してPDFを生成し、出力をユーザーにストリーミングしています。私のコードは次のようになります。

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();

このコードが実行されると、PDFがブラウザにストリーミングされ、AcrobatReaderが開きます。よく働く!

私の問題は、ユーザーがファイルを保存しようとすると、デフォルトで実際のファイル名になります...この場合、デフォルトでCrystalReportPage.pdfになります。とにかくこれを設定できますか?もしそうなら、どのように?

どんな助けでもいただければ幸いです。

4

2 に答える 2

17

通常、content-dispositionヘッダーを介して-すなわち

Content-Disposition: inline; filename=foo.pdf

したがって、Headers.Add、AddHeader、またはそれが何であれ、次のものを使用するだけです。

response.Headers.Add( "Content-Disposition"、 "inline; filename = foo.pdf");

(インラインは「ブラウザに表示」、添付ファイルは「ファイルとして保存」です)

于 2008-12-06T18:07:17.000 に答える
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();
于 2008-12-06T18:10:20.253 に答える