使用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下删除字符串中HTML标签的函数
Aug 27 PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
Nov 02 PHP
基于curl数据采集之正则处理函数get_matches的使用
Apr 28 PHP
php图片的二进制转换实现方法
Dec 15 PHP
php实现Mysql简易操作类
Oct 11 PHP
php去除二维数组的重复项方法
Nov 03 PHP
Yii快速入门经典教程
Dec 28 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
Dec 15 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 PHP
laravel框架关于搜索功能的实现
Mar 15 PHP
PHP利用Mysql锁解决高并发的方法
Sep 04 PHP
smarty模板的使用方法实例分析
Sep 18 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中的超全局变量
2006/10/09 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
2012/09/30 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
JS 的应用开发初探(mootools)
2009/12/19 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
javascript实现的一个带下拉框功能的文本框
2014/05/08 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
2016/12/14 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
vue单页应用在页面刷新时保留状态数据的方法
2018/09/21 Javascript
使用微信小程序开发弹出框应用实例详解
2018/10/18 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
uniapp与webview之间的相互传值的实现
2020/06/29 Javascript
JavaScript实现多文件下载方法解析
2020/08/07 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
几种实用的pythonic语法实例代码
2018/02/24 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
python实现KNN分类算法
2019/10/16 Python
django实现支付宝支付实例讲解
2019/10/17 Python
python 使用shutil复制图片的例子
2019/12/13 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
Django认证系统user对象实现过程解析
2020/03/02 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
电子信息专业自荐书
2014/02/04 职场文书
医药销售自荐书
2014/05/29 职场文书
学生检讨书范文
2015/01/27 职场文书
红旗渠导游词
2015/02/09 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
浅谈Python类的单继承相关知识
2021/05/12 Python
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL
css3 选择器
2022/05/11 HTML / CSS