如何让浏览器在新标签页中打开pdf文件,而不仅仅是下载它?

时间:2018-10-06 19:37:54

标签: javascript asp.net-mvc

我有一个下载按钮和一个查看按钮。通过返回FileResult的MVC控制器功能下载文件。

控制器功能如下:

    public FileResult DownloadStatement(Guid statementID) {
        StatementFileModel statementFile = BL.GetStatementByID(statementID);
        byte[] fileBytes = statementFile.FileData;
        Response.ContentType = "application/pdf";
        Response.AddHeader("Content-Disposition", "attachment;filename=" + statementFile.FileName);
        Response.BinaryWrite(fileBytes);
        return File(fileBytes, "application/pdf");
    }

以下内容非常适合立即下载PDF而无需在浏览器中打开它:

window.location.href = "/DownloadStatement?statementID=" + statementID;

我在使用“查看”按钮时遇到了麻烦。我尝试了以下方法,但是它也只是下载PDF而没有在浏览器中打开它:

window.open("/DownloadStatement?statementID=" + statementID, '_blank', 'fullscreen=yes');

2 个答案:

答案 0 :(得分:4)

Content-Disposition: attachment标头告诉浏览器下载文件。单击“查看”按钮时,请勿发送该标头值(attachment),并且浏览器应显示PDF而不是下载它。

完全省略标题或发送Content-Disposition: inline就足够了。

答案 1 :(得分:1)

使用
header("Content-Disposition", "attachment; filename=" + statementFile.FileName)供下载;
使用
header("Content-Disposition", "inline; filename=" + statementFile.FileName);以在浏览器中将其打开: