返回此流时,如何让浏览器提示“打开/保存”?

时间:2011-09-14 20:46:42

标签: crystal-reports stream

我正在使用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。如何通过保存/打开选项修改上面的代码?

谢谢!

1 个答案:

答案 0 :(得分:0)

在此SO post中找到了解决方案。

将此添加到我的代码中......

response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", reportName));