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

本文关键字:MVC 数组 浏览器 显示 字节数 字节 PDF 文件 存储 网站 | 更新日期: 2023-09-27 18:17:09

我收到一个包含PDF的byte[]

我需要采取byte[]并在浏览器中显示PDF 。我发现类似的问题像这样-如何在MVC返回PDF到浏览器?但是,它在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");
    }

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

如果您已经有字节[],您应该使用FileContentResult,它"将二进制文件的内容发送到响应"。只有当你有一个流打开时才使用FileStreamResult

public ActionResult DisplayPDF()
{
    byte[] byteArray = GetPdfFromDB();
    return new FileContentResult(byteArray, "application/pdf");
}

您可以直接在浏览器中显示字节数组PDF,只需使用MemoryStream而不是StreamFileStreamResult而不是File:

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");
    }
}