在新选项卡中打开文件而不创建本地或服务器副本

时间:2016-07-15 08:47:10

标签: asp.net-mvc database crystal-reports

我有程序存储水晶报告(以字节为单位),然后将它们列表给用户(MVC5)。当用户点击列表中的报告名称时,他应该在新标签中看到pdf报告。在服务器端,我从db获取包含二进制数据和长度的数据。问题是 - 如何在新选项卡中打开此数据,而不是在服务器或本地计算机上下载转换后的文件?

1 个答案:

答案 0 :(得分:1)

您可以使用window.open在新的浏览器选项卡中打开pdf,并在jquery中调用您的服务器端方法。

jQuery的:

$('.reportName').click(function () {
 window.open("../../ControllerName/ActionMethodName, '_blank');
});

服务器端:

public static void ActionMethodName()
{

///Here you got to convert your crystal report to memory stream inorder to pass stream array data inside binary write///

HttpContext.Current.Response.AppendHeader("content-disposition", "inline;  filename=*****.pdf");
HttpContext.Current.Response.ContentType = "application/pdf";
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Expires = -1;
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.BinaryWrite(outStream.ToArray());
}