使用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 8小时时间差的解决方法小结
Dec 22 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
初步介绍PHP扩展开发经验分享
Sep 06 PHP
克隆一个新项目的快捷方式
Apr 10 PHP
PHP中执行cmd命令的方法
Oct 11 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
Dec 21 PHP
PDO的安全处理与事物处理方法
Oct 31 PHP
PHP清除缓存的几种方法总结
Sep 12 PHP
PHP序列化的四种实现方法与横向对比
Nov 29 PHP
Laravel 创建可以传递参数 Console服务的例子
Oct 14 PHP
laravel 实现根据字段不同值做不同查询
Oct 23 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
May 02 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将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
深入浅析同源策略和跨域访问
2015/11/26 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
整理Python中的赋值运算符
2015/05/13 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
Python文件操作方法详解
2020/02/09 Python
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
波兰家居饰品和厨房配件网上商店:Maleomi
2020/12/15 全球购物
毕业生医学检验求职信
2013/10/16 职场文书
车间班组长的职责
2013/12/13 职场文书
音乐教育感言
2014/03/05 职场文书
职工年度考核评语
2014/12/31 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
通知的格式范文
2015/04/27 职场文书
2015年教师师德师风承诺书
2015/04/28 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL
Python学习开发之图形用户界面详解
2021/08/23 Python
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript
Redis命令处理过程源码解析
2022/02/12 Redis