使用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基础知识:类与对象(5) static
Dec 13 PHP
PHP与MySQL开发中页面出现乱码的一种解决方法
Jul 29 PHP
Discuz!下Memcache缓存实现方法
May 28 PHP
PHP session会话的安全性分析
Sep 08 PHP
php读取目录及子目录下所有文件名的方法
Oct 20 PHP
thinkphp循环结构用法实例
Nov 24 PHP
php实现转换ubb代码的方法
Jun 18 PHP
PHP加密解密类实例代码
Jul 20 PHP
php实现跨域提交form表单的方法【2种方法】
Oct 17 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
Oct 23 PHP
php遍历目录下文件并按修改时间排序操作示例
Jul 12 PHP
Yii中特殊行为ActionFilter的使用方法示例
Oct 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 Token(令牌)设计
2008/03/15 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
2012/04/25 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
2017/04/19 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
javascript常用方法汇总
2014/12/02 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
2015/10/26 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
js密码强度检测
2016/01/07 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
js原生实现FastClick事件的实例
2016/11/20 Javascript
微信小程序 详解Page中data数据操作和函数调用
2017/01/12 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
手动用webpack搭建第一个ReactApp的示例
2018/04/11 Javascript
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
webpack手动配置React开发环境的步骤
2018/07/02 Javascript
React 组件中的 bind(this)示例代码
2018/09/16 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
js禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome
2020/10/01 Javascript
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
python实现排序算法解析
2018/09/08 Python
python实现感知器算法(批处理)
2019/01/18 Python
Python读取指定日期邮件的实例
2019/02/01 Python
基于CSS3实现立方体自转效果
2016/03/01 HTML / CSS
俄罗斯苹果优质经销商商店:iPort
2020/05/27 全球购物
迎接领导欢迎词
2014/01/11 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
成绩单评语
2015/01/04 职场文书
开除通知书范本
2015/04/25 职场文书
入党函调证明材料
2015/06/19 职场文书
关于环保的广播稿
2015/12/17 职场文书
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle
Win11 Dev 预览版25174.1000发布 (附更新修复内容汇总)
2022/08/05 数码科技