使用PHP强制下载PDF文件示例


Posted in PHP onJanuary 17, 2014

我们有时会遇到这样一种情况,当需要下载一个PDF文件时,如果不经处理会直接在浏览器里打开PDF文件,然后再需要通过另存为才能保存下载文件。本文将通过PHP来实现直接下载PDF文件。

实现原理:我们仅仅只需要修改页面HTTP头,把Content-Type设置为force-download,问题即可解决。

请看代码:

forceDownload("pdfdemo.pdf"); 
function forceDownload($filename) { if (false == file_exists($filename)) { 
return false; 
} 
// http headers 
header('Content-Type: application-x/force-download'); 
header('Content-Disposition: attachment; filename="' . basename($filename) .'"'); 
header('Content-length: ' . filesize($filename)); 
// for IE6 
if (false === strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6')) { 
header('Cache-Control: no-cache, must-revalidate'); 
} 
header('Pragma: no-cache'); 
// read file content and output 
return readfile($filename);; 
}

为了方便,我写了一个函数forceDownload(),然后通过调用该函数即可。
PHP 相关文章推荐
PHP base64+gzinflate压缩编码和解码代码
Oct 03 PHP
php中的静态变量的基本用法
Mar 20 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
Apr 28 PHP
php中curl和file_get_content的区别
May 10 PHP
PHP图片处理之图片旋转和图片翻转实例
Nov 19 PHP
windows下安装php的memcache模块的方法
Apr 07 PHP
PHP中遇到的时区问题解决方法
Jul 23 PHP
PHP-FPM实现性能优化
Mar 31 PHP
PHP实现json_decode不转义中文的方法
May 20 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
Sep 30 PHP
多个Laravel项目如何共用migrations详解
Sep 25 PHP
php传值和传引用的区别点总结
Nov 19 PHP
5种PHP创建数组的实例代码分享
Jan 17 #PHP
实现PHP多线程异步请求的3种方法
Jan 17 #PHP
一个PHP二维数组排序的函数分享
Jan 17 #PHP
PHP登陆后跳转到登陆前页面实现思路及代码
Jan 17 #PHP
修改apache配置文件去除thinkphp url中的index.php
Jan 17 #PHP
php使用curl访问https示例分享
Jan 17 #PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
Jan 17 #PHP
You might like
深入解析php模板技术原理【一】
2008/01/10 PHP
php GD绘制24小时柱状图
2008/06/28 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
JMenuTab简单使用说明
2008/03/13 Javascript
Jquery Select操作方法集合脚本之家特别版
2010/05/17 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
2014/01/13 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
2014/08/15 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
2016/07/18 Javascript
Canvas 制作动态进度加载水球详解及实例代码
2016/12/09 Javascript
过期软件破解办法实例详解
2017/01/04 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
vue实现简单表格组件实例详解
2017/04/16 Javascript
vue实现验证码输入框组件
2017/12/14 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
Python实现的文本编辑器功能示例
2017/06/30 Python
基于Python log 的正确打开方式
2018/04/28 Python
实用自动化运维Python脚本分享
2018/06/04 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
python文件编写好后如何实践
2020/07/07 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
会计主管岗位职责
2014/01/03 职场文书
师范生求职信
2014/06/14 职场文书
单位接收函格式
2015/01/30 职场文书
社会实践活动总结格式
2015/05/11 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
领导干部学习心得体会
2016/01/23 职场文书
文案策划岗位个人自我评价(范文)
2019/08/08 职场文书
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技