2011-09-14 9 views
0

私はCrystal Reportsを使用していて、PDFレポートのストリームを返すコードをいくつか持っています。レポートの生成が完了すると、ブラウザー(IE8)はユーザーにレポートのオープンまたは保存を求めるプロンプトを表示します。それは動作しますが、背後では例外がスローされています。私たちは例外を処理しますが、処理は他のいくつかの問題を引き起こします。このストリームが返されたときにブラウザに「開く/保存する」プロンプトを表示させるにはどうすればよいですか?

// This completes but throws an exception. 
rpt.ExportToHttpResponse(crExportOptions.ExportFormatType, resp, true, fileName); 

SAPサイトでpostによる解決策が機能しないと例外がもはやスローされます。しかし、問題はファイルを開くか保存するオプションがなくなったことです。レポートはブラウザに表示されます。

  System.IO.Stream oStream = null; 
      byte[] byteArray = null; 
      oStream = report.ExportToStream(crExportOptions.ExportFormatType); 
      byteArray = new byte[oStream.Length]; 
      oStream.Read(byteArray, 0, Convert.ToInt32(oStream.Length - 1)); 

      response.ClearContent(); 
      response.ClearHeaders(); 
      response.ContentType = "application/pdf"; 
      response.BinaryWrite(byteArray); 
      response.Flush(); 
      response.Close(); 

      report.Close(); 
      report.Dispose(); 

私はケーキがほしいと思うので、私はそれを食べたいです!私は例外(SAPソリューションによって解決されました)がスローされるのを望んでいませんが、依然として返されたPDFを開くか保存するオプションが必要です。上記のコードを変更するにはどうすればよいですか?保存/開くオプションをユーザーに提示しますか?

ありがとうございます!

答えて

0

この中に解が見つかりました。post

は...私のコードにこれを追加

response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", reportName)); 
関連する問題