C#MVC网站PDF文件存储在字节数组中,在浏览器中显示

时间:2013-06-05 15:22:52

标签: c# asp.net-mvc pdf-generation

我收到的byte[]包含PDF。

我需要使用byte[]并在浏览器中显示PDF 。 我发现了类似的问题 - How to return PDF to browser in MVC?。 但是,它在PDF查看器中打开PDF,我也收到一条错误,说文件无法打开,因为它是“ - 不支持的文件类型或因为文件已损坏”。

如何在浏览器中打开PDF?到目前为止,我的代码如下所示 -

    public ActionResult DisplayPDF()
    {
        byte[] byteArray = GetPdfFromDB();
        Stream stream = new MemoryStream(byteArray);
        stream.Flush(); 
        stream.Position = 0; 

        return File(stream, "application/pdf", "Labels.pdf");
    }

2 个答案:

答案 0 :(得分:7)

您只需使用MemoryStream代替StreamFileStreamResult代替File即可在浏览器中直接显示字节数组PDF:

 public ActionResult DisplayPDF()
    {
    byte[] byteArray = GetPdfFromDB();
    using( MemoryStream pdfStream = new MemoryStream())
    {
    pdfStream.Write(byteArray , 0,byteArray .Length);
    pdfStream.Position = 0;
    return new FileStreamResult(pdfStream, "application/pdf");
    }
    }

答案 1 :(得分:3)

如果已经有了byte [],则应仅使用FileContentResult,它“将二进制文件的内容发送到响应”。仅在流打开时使用FileStreamResult

public ActionResult DisplayPDF()
{
    byte[] byteArray = GetPdfFromDB();

    return new FileContentResult(byteArray, "application/pdf");
}