在浏览器中强制下载PDF文件

时间:2017-12-01 08:09:06

标签: html pdf http-headers

我有强制文件下载的标题,而不是在浏览器中查看,但我需要提供该选项。我已经看过Stack Overflow上的几个回答这个问题的帖子(例如CodePen),但我仍然没有得到理想的结果,所以我想检查一下我是否遗漏了什么。

以下是我强制下载的标题

    $file = 'file.pdf';
    $filePath = 'path/to/file.pdf';

    header("Cache-Control: public");
    header("Content-Length: 20000");
    header("Content-Description: File Transfer");
    header("Content-Type:file");
    header('Content-Disposition: attachment; filename="$file"');
    header("Content-Transfer-Encoding: binary");

    readfile($filePath); 

以下是尝试在浏览器中显示文件的标题

    header("Cache-Control: public");
    header("Content-Length: 20000");
    header("Content-Description: File Transfer");
    header("Content-Type:file");
    header('Content-Disposition:inline; filename="$file"');
    header("Content-Transfer-Encoding: binary");

    readfile($filePath); 

所以唯一的变化是内容处置标题。

但是,我仍然只是在浏览器中显示标记(见图)。

How to force files to open in browser instead of download (pdf)?

有什么想法吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

当您要指示浏览器执行下载时,您仍在使用inline进行内容处理。请尝试使用attachment

更多详情:Content-Disposition