使用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 expects parameter 1 to be resource, array given 错误
Mar 23 PHP
php Rename 更改文件、文件夹名称
May 24 PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
Aug 09 PHP
codeigniter集成ucenter1.6双向通信的解决办法
Jun 12 PHP
ThinkPHP查询语句与关联查询用法实例
Nov 01 PHP
php实现MySQL数据库备份与还原类实例
Dec 09 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
Dec 24 PHP
php文档工具PHP Documentor安装与使用方法
Jan 25 PHP
PHP实现长文章分页实例代码(附源码)
Feb 03 PHP
PHP正则表达式匹配替换与分割功能实例浅析
Feb 04 PHP
php实现支付宝当面付(扫码支付)功能
May 30 PHP
PHP PDOStatement::bindParam讲解
Jan 30 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实现根据字符串生成对应数组的方法
2014/09/22 PHP
IE与Firefox在JavaScript上的7个不同写法小结
2009/09/14 Javascript
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
js实现常用排序算法
2016/08/09 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
vue + element-ui的分页问题实现
2018/12/17 Javascript
vue自定义指令用法经典实例小结
2019/03/16 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
vue将data恢复到初始状态 && 重新渲染组件实例
2020/09/04 Javascript
[56:18]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python下singleton模式的实现方法
2014/07/16 Python
Python实现数据库编程方法详解
2015/06/09 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
python装饰器实例大详解
2017/10/25 Python
用python制作游戏外挂
2018/01/04 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
为什么要有struct关键字
2012/05/08 面试题
解释i节点在文件系统中的作用
2013/11/26 面试题
毕业生找工作的自我评价
2013/10/18 职场文书
数控技术专业推荐信
2013/11/01 职场文书
给酒店员工的表扬信
2014/01/11 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
2014年党员个人工作总结
2014/12/02 职场文书
综合素质评价自我评价
2015/03/06 职场文书
三八妇女节新闻稿
2015/07/17 职场文书
争做文明公民倡议书
2019/06/24 职场文书
Python实现列表拼接和去重的三种方式
2021/07/02 Python
Flutter集成高德地图并添加自定义Maker的实践
2022/04/07 Java/Android