使用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 相关文章推荐
BBS(php & mysql)完整版(三)
Oct 09 PHP
留言板翻页的实现详解
Oct 09 PHP
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
Jun 04 PHP
PHP文件读写操作之文件写入代码
Jan 13 PHP
ThinkPHP写第一个模块应用
Feb 20 PHP
PHP 二维数组根据某个字段排序的具体实现
Jun 03 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
PHP如何读取由JavaScript设置的Cookie
Mar 22 PHP
php通过header发送自定义数据方法
Jan 18 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
Jun 10 PHP
PHP基于array_unique实现二维数组去重
Jul 14 PHP
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
Apr 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
让这部DC动画新作刷新你的认知
2020/03/03 欧美动漫
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
PHP会员找回密码功能的简单实现
2016/09/05 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
JS中confirm,alert,prompt函数使用区别分析
2010/04/01 Javascript
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
jquery div 居中技巧应用介绍
2012/11/24 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
React Hooks的深入理解与使用
2018/11/12 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
Linux下编译安装MySQL-Python教程
2015/02/02 Python
Python数据类型学习笔记
2016/01/13 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
python实现Windows电脑定时关机
2018/06/20 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
python进程和线程用法知识点总结
2019/05/28 Python
python的mysql数据库建立表与插入数据操作示例
2019/09/30 Python
对python中 math模块下 atan 和 atan2的区别详解
2020/01/17 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
python 实现超级玛丽游戏
2020/11/25 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
考试不及格的检讨书
2014/01/22 职场文书
文字自荐书范文
2014/02/10 职场文书
《满井游记》教学反思
2014/02/26 职场文书
综治宣传月活动总结
2014/04/28 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
整改报告格式
2014/11/06 职场文书
python对文档中元素删除,替换操作
2022/04/02 Python