我正在尝试添加一个从服务器下载pdf的链接,而不是重定向浏览器以在另一个页面中打开pdf。我在许多网站上看到过这样的选项但无法获取代码。而且大多数人都认为应该只使用php,任何人都可以帮助我。
答案 0 :(得分:5)
使用以下代码将其重定向到php页面:
$path_to_file = '/var/www/somefile.pdf'; //Path to file you want downloaded
$file_name = "somefile.pdf"; //Name of file for download
header('Pragma: public'); // required
header('Expires: 0'); // no cache
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header("Content-Type: application/octet-stream");
header('Content-Disposition: attachment; filename="'.$file_name.'"');
header('Content-Transfer-Encoding: binary');
readfile($path_to_file);
die();
答案 1 :(得分:3)
或者您可以在.htaccess
<FilesMatch "\.(?i:pdf)$">
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>
答案 2 :(得分:0)
您有时可以更改http标头:
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"lol.pdf\"");
像这样。但是出于安全原因,一些浏览器实际上会阻止这种情况。
因为我意识到这一点尚不清楚。这些标题将从另一个页面发送,该页面实际读入文件并使用这些标题将其发送到浏览器。
然后链接会将它的href
属性指向此PHP页面,该页面读入文件并发送标题。
答案 3 :(得分:0)
来自php
header("Content-Type: application/octet-stream");
header("Content-Disposition:attachment;filename=myfile.pdf");
然后是文件内容
或者来自Apache
<FilesMatch "\.(?i:pdf)$">
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>