使用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验证session无效的解决方法
Nov 04 PHP
ThinkPHP模板输出display用法分析
Nov 26 PHP
PHP数组相关函数汇总
Mar 24 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
Oct 21 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
Dec 02 PHP
PHP实现JS中escape与unescape的方法
Jul 11 PHP
php使用get_class_methods()函数获取分类的方法
Jul 20 PHP
thinkPHP5.0框架URL访问方法详解
Mar 18 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
Jun 28 PHP
laravel学习笔记之模型事件的几种用法示例
Aug 15 PHP
Laravel 自带的Auth验证登录方法
Sep 30 PHP
php实现大文件断点续传下载实例代码
Oct 01 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 编写的日历
2006/10/09 PHP
php empty()与isset()区别的详细介绍
2013/06/17 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
2015/10/19 PHP
php微信开发之谷歌测距
2018/06/14 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
2019/04/12 PHP
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
$.getJSON在IE下失效的原因分析及解决方法
2013/06/16 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
jquery设置按钮停顿3秒不可用
2014/03/07 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
基于jQuery实现的幻灯图片切换
2016/12/02 Javascript
JS实现课堂随机点名和顺序点名
2017/03/09 Javascript
vue vue-Router默认hash模式修改为history需要做的修改详解
2018/09/13 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
vue 获取url里参数的两种方法小结
2020/11/12 Javascript
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
python2.7的编码问题与解决方法
2016/10/04 Python
对python中return和print的一些理解
2017/08/18 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
JBL英国官网:JBL UK
2018/07/04 全球购物
大学生毕业自我鉴定范文
2013/09/19 职场文书
运动会广播稿30字
2014/01/21 职场文书
关于读书的演讲稿
2014/05/07 职场文书
主题党日活动总结
2014/07/08 职场文书
面试感谢信范文
2015/01/22 职场文书
综治目标管理责任书
2015/05/11 职场文书
新员工入职感想
2015/08/07 职场文书
这样写python注释让代码更加的优雅
2021/06/02 Python
python中 .npy文件的读写操作实例
2022/04/14 Python
nginx配置限速限流基于内置模块
2022/05/02 Servers