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

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

问题是当用户点击这个链接时

  • 如果用户已安装Adobe Acrobat,则会在Adobe Reader的同一浏览器窗口中打开该文件.
  • 如果未安装Adobe Acrobat,则会向用户弹出下载文件的窗口.

但我希望无论是否安装了"AdobeAcrobat",它总是弹出给用户下载.

请告诉我怎么做?

推荐答案

而不是链接到.PDF文件,而是执行以下操作

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

它输出一个自定义标题,打开PDF(二进制安全)并将数据打印到用户的浏览器,然后他们可以 Select 保存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:显然,对"file"变量进行一些健全性判断,以防止人们窃取您的文件,例如不接受文件扩展名、拒绝斜杠、添加.pdf的价值

Php相关问答推荐

根据类别在WooCommerce中添加库存数量后缀

当我们使用PHPUnit时,控制台中的--uses param到底起了什么作用以及如何使用?

Woocommerce自定义变体html表仅显示带值的列

PHP邮件表单无法识别重音/特殊字符

将带有值的属性添加到WooCommerce产品,保留现有属性

Yahoo Finance API文件_GET_CONTENTS 429请求太多

Mysqli_stmt::Execute():结果字段元数据中存在过早的EOF

PHP原始数据读取引发max_input_vars错误

将客户重定向到自定义感谢页后的空白页

目标类[Set_Locale]不存在.拉威尔

在个人资料页面上显示个人资料图像

文本到语音:不考虑音高值

Symfony框架锁定和.env设置

在 WooCommerce 更新结帐事件上动态更新自定义内容

VS Code 对 PHP 上从父类继承的方法报告误报

如何在 PHP 中对具有相同数组值的值求和

根据WooCommerce中的产品重量更改简单产品的输入数量步值

如何在WooCommerce管理产品列表中显示运输类别列

php preg_match 验证 Tiktok 用户名

PHP Loop 在迭代中使用修改后的数据