为什么我的PDF文件无法打开。 ASP.net,c#

时间:2017-02-22 16:20:12

标签: c# asp.net pdf

我目前正在尝试在网络浏览器中打开pdf文件。我正在从数据库中检索pdf的字节数组并将其存储在应用程序文件夹中。从这里我不能在c#代码中启动PDF。任何帮助都会非常感激,因为我很难过。

 if(dt.Rows.Count > 0)
        {
            byte[] data = (byte[])dt.Rows[0][0];
            string strFileName =   Utilities.GetAppBasePath()+Config.GetImages+DateTime.Now.Millisecond.ToString()+".pdf";
            System.IO.File.WriteAllBytes(strFileName, data);

            OpenPDF(strFileName);
}
protected void OpenPDF(string strFileName)
    {
          Response.Redirect(strFileName);
    }

2 个答案:

答案 0 :(得分:0)

我不知道运行PDF是否像运行普通应用程序一样,如果它运行,那么我认为你最好的选择可能是使用类似'Process.Start(strFileName);'的行。或'Process.Start(strFileName.Text);'

答案 1 :(得分:0)

嗨,大家好,感谢您的评论,非常感谢。没有例外,但它不起作用的原因是由于回拨电话。我现在已经触发了这个来解决这个问题。 Dan,你是对的,不能通过响应重定向这样调用,并解决了这个问题,我使用了以下代码:

if(dt.Rows.Count > 0)
        {
            byte[] data = (byte[])dt.Rows[0][0];

            OpenPDF(data);                
        }

protected void OpenPDF(byte [] data)
    {
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.ClearHeaders();
        HttpContext.Current.Response.ClearContent();
        HttpContext.Current.Response.ContentType = "application/pdf";
        HttpContext.Current.Response.Charset = "";
        HttpContext.Current.Response.AddHeader("Pragma", "public");
        HttpContext.Current.Response.AddHeader("Content-Disposition", "inline; filename=\"image.pdf\"");
        HttpContext.Current.Response.BinaryWrite(data);
        HttpContext.Current.Response.Flush();
        HttpContext.Current.Response.Close();
        HttpContext.Current.Response.End();            
    }

再次感谢您的帮助,为任何vauge-ness道歉,我非常擅长在本网站发帖,我希望这篇文章可以帮助其他人解决这个问题。

由于