一尘不染

如何使HTML链接中的PDF文件可下载?

php

我在网页上提供了pdf文件的链接以供下载,如下所示

<a href="myfile.pdf">Download Brochure</a>

问题是,当用户单击此链接时,

  • 如果用户已安装Adobe Acrobat,则它将在Adobe Reader的同一浏览器窗口中打开文件。
  • 如果未安装Adobe Acrobat,则弹出窗口提示用户下载文件。

但是,无论是否安装了“ Adob​​e acrobat”,我都希望它始终弹出用户下载。

请告诉我我该怎么做?


阅读 1467

收藏
2020-05-26

共1个答案

一尘不染

而不是链接到.PDF文件,而是执行类似的操作

<a href="pdf_server.php?file=pdffilename">Download my eBook</a>

它会输出一个自定义标头,打开PDF(二进制文件保险箱)并将数据打印到用户的浏览器中,然后尽管用户设置了浏览器,他们仍可以选择保存PDF。pdf_server.php应如下所示:

header("Content-Type: application/octet-stream");

$file = $_GET["file"] .".pdf";
header("Content-Disposition: attachment; filename=" . urlencode($file));   
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");            
header("Content-Length: " . filesize($file));
flush(); // this doesn't really matter.
$fp = fopen($file, "r");
while (!feof($fp))
{
    echo fread($fp, 65536);
    flush(); // this is essential for large downloads
} 
fclose($fp);

PS:显然对“文件”变量进行了一些检查,以防止他人窃取您的文件,例如不接受文件扩展名,拒绝斜杠,在值上添加.pdf。

2020-05-26