内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
我在我的网页上提供pdf文件的链接供下载,如下所示
<a href="myfile.pdf">Download Brochure</a>
问题是当用户单击此链接时
如果用户已安装AdobeAcrobat,则在AdobeReader的同一浏览器窗口中打开该文件。
如果AdobeAcrobat未安装,则弹出用户以下载该文件。
但我希望它总是弹出到用户下载,无论是否安装了“AdobeAcrobat”。
请告诉我怎么做?
不是链接到PDF文件,而是执行以下操作
<a href="pdf_server.php?file=pdffilename">Download my eBook</a>
它输出一个自定义的标题,打开PDF(二进制安全)并将数据打印到用户的浏览器,然后他们可以选择保存PDF,尽管他们的浏览器设置。pdf_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:显然,对“file”变量进行一些正常检查,以防止人们窃取你的文件,例如不接受文件扩展名、拒绝斜杠、将.pdf添加到值中。
这是一个常见的问题,但很少有人知道有一个简单的HTML 5解决方案:
<a href="./directory/yourfile.pdf" download="newfilename">Download the pdf</a>
newfilename
用户保存文件的建议文件名。或者,如果你将文件名保持为空,则默认为服务器端的文件名,如下所示:
<a href="./directory/yourfile.pdf" download>Download the pdf</a>
兼容性:我在Firefox 21和Iron上测试了这个,两者都很好。它可能不适用于HTML 5-不兼容或过时的浏览器。我测试过的唯一没有强制下载的浏览器是IE