使用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下mysql数据库操作类(改自discuz)
Jul 03 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
Feb 06 PHP
基于python发送邮件的乱码问题的解决办法
Apr 25 PHP
探讨:如何编写PHP扩展
Jun 13 PHP
PHP获取当前页面URL函数实例
Oct 22 PHP
PHP+JQuery+Ajax实现分页方法详解
Aug 06 PHP
php事件驱动化设计详解
Nov 10 PHP
thinkPHP5.0框架独立配置与动态配置方法
Mar 17 PHP
PHP INT类型在内存中占字节详解
Jul 20 PHP
PHP实现的文件浏览器功能简单示例
Sep 12 PHP
php面试实现反射注入的详细方法
Sep 30 PHP
利用ajax+php实现商品价格计算
Mar 31 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实现微信公众号主动推送消息
2015/12/31 PHP
php生出随机字符串
2017/07/06 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
PHP实现数组根据某个单元字段排序操作示例
2018/08/01 PHP
PHP设计模式之观察者模式定义与用法示例
2018/08/04 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
2019/10/17 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
jquery模拟SELECT下拉框取值效果
2013/10/23 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
基于javascript html5实现3D翻书特效
2016/03/14 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
JS实现评价的星星功能
2017/08/20 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
2017/10/26 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
2017/12/12 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
详解vue微信网页授权最终解决方案
2019/06/16 Javascript
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
Python获取脚本所在目录的正确方法
2014/04/15 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
Python将文本去空格并保存到txt文件中的实例
2018/07/24 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
Bandier官网:奢侈、时尚前卫的健身服装首选目的地
2020/07/05 全球购物
高校毕业生自我鉴定
2013/10/27 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
中学生家长评语大全
2014/04/16 职场文书
说明书范文
2014/05/07 职场文书
统计工作个人总结
2015/03/03 职场文书
整改通知书
2015/04/20 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
python - asyncio异步编程
2021/04/06 Python
python解决12306登录验证码的实现
2021/04/18 Python