【问题标题】:Using FileStreamResult to display PDF in browser使用 FileStreamResult 在浏览器中显示 PDF
【发布时间】:2018-03-23 15:20:31
【问题描述】:

我正在尝试使用以下操作在浏览器中显示 PDF 文件。 执行此操作时,结果是一个看起来像附加图像的整个屏幕。 Rendered result 看起来 MediaTypeNames.Application.Pdf 被忽略了。 Chrome 或 Firfox 的结果相同。 我错过了什么?

[HttpGet]
    public FileResult ViewFile()
    {
        Response.AppendHeader("Content-Disposition", "inline; filename=" + Server.UrlEncode("file.pdf") + ";");
        var path = @"C:\temp\file.pdf";
        FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read);
        return new FileStreamResult(stream, MediaTypeNames.Application.Pdf);
    }

【问题讨论】:

    标签: filestreamresult


    【解决方案1】:

    您可以使用下面的代码 sn-p 在浏览器中显示 PDF 文档。

            FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read);
            fileStream.Position = 0;
            return new FileStreamResult(fileStream, System.Net.Mime.MediaTypeNames.Application.Pdf);
    

    【讨论】:

    • 我添加了 fileStream.Position = 0;但它仍然产生与附图所示相同的结果。看起来浏览器认为文件是文本而不是 PDF。
    • 尝试直接在浏览器中打开文件,查看是否正常显示。
    • 该文件是一个有效的 pdf,浏览器没有呈现为 PDF。我得到�/��$Z����U�m@��
    • 如果使用包含嵌入的局部视图,则正确显示 pdf。我也尝试返回 File(pdfByte, MediaTypeNames.Application.Pdf);并显示垃圾字符。我错过了什么?
    • 我不能使用嵌入,因为 pdf 是流时。
    猜你喜欢
    • 2014-08-03
    • 1970-01-01
    • 2023-02-23
    • 2014-06-18
    • 1970-01-01
    • 2016-08-03
    • 2014-06-25
    • 2017-07-13
    • 2012-07-20
    相关资源
    最近更新 更多