使用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 相关文章推荐
编写Smarty插件在模板中直接加载数据的详细介绍
Jun 26 PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 PHP
php使用PDO方法详解
Dec 27 PHP
php实现通用的信用卡验证类
Mar 24 PHP
php操作access数据库的方法详解
Feb 22 PHP
php基于PDO实现功能强大的MYSQL封装类实例
Feb 27 PHP
Lumen timezone 时区设置方法(慢了8个小时)
Jan 20 PHP
laravel框架 laravel-admin上传图片到oss的方法
Oct 13 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 PHP
PHP执行系统命令函数实例讲解
Mar 03 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
Mar 09 PHP
一文搞懂php的垃圾回收机制
Jun 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 伪造本地文件包含漏洞的代码
2011/11/03 PHP
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
javascript 面向对象思想 附源码
2009/07/07 Javascript
javascript getElementsByName()的用法说明
2009/07/31 Javascript
jQuery的deferred对象使用详解
2011/08/20 Javascript
JavaScript学习笔记之内置对象
2015/01/22 Javascript
javascript实现限制上传文件大小
2015/02/06 Javascript
AngularJS的Filter的示例详解
2017/03/07 Javascript
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
在python win系统下 打开TXT文件的实例
2018/04/29 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
python生成密码字典的方法
2018/07/06 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
python顺序执行多个py文件的方法
2019/06/29 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
加拿大在线隐形眼镜专家:PerfectLens.ca
2016/11/19 全球购物
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
ghd法国官方网站:英国最受欢迎的美发工具品牌
2019/04/18 全球购物
Java如何调用外部Exe程序
2015/07/04 面试题
UNIX操作系统结构由哪几部分组成
2016/02/17 面试题
毕业生就业自荐书
2013/12/15 职场文书
大学生军训广播稿
2014/01/24 职场文书
简历上的自我评价怎么写
2014/01/28 职场文书
静心口服夜广告词
2014/03/20 职场文书
大学生活自我评价
2014/04/09 职场文书
学校消防安全责任书
2014/07/23 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
医院志愿者活动总结
2015/05/06 职场文书
孔繁森观后感
2015/06/10 职场文书
七一慰问简报
2015/07/20 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang
Android开发之底部导航栏的快速实现
2022/04/28 Java/Android