使用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中的日期处理方法集锦
Jan 02 PHP
PHP 常用数组内部函数(Array Functions)介绍
Jun 05 PHP
深入解析phpCB批量转换的代码示例
Jun 27 PHP
浅析echo(),print(),print_r(),return之间的区别
Nov 27 PHP
PHP输出缓存ob系列函数详解
Mar 11 PHP
php使用PDO操作MySQL数据库实例
Dec 30 PHP
php数组函数array_walk用法示例
May 26 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
PHP迭代器和迭代的实现与使用方法分析
Apr 19 PHP
PHP实现的DES加密解密类定义与用法示例
Nov 02 PHP
php JWT在web端中的使用方法教程
Sep 06 PHP
Laravel中9个不经常用的小技巧汇总
Apr 16 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 7新特性之类型申明详解
2017/06/06 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
jQuery 1.2.x 升? 1.3.x 注意事项
2009/05/06 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
2014/08/13 Javascript
20条学习javascript的编程规范的建议
2014/11/28 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
js隐式转换的知识实例讲解
2018/09/28 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
[01:00:04]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第二局
2016/02/26 DOTA
python 3利用BeautifulSoup抓取div标签的方法示例
2017/05/28 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
深入解析神经网络从原理到实现
2019/07/26 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
2019/11/26 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
厂长助理岗位职责
2013/12/27 职场文书
交通事故调解协议书
2014/04/16 职场文书
《海底世界》教学反思
2014/04/16 职场文书
关爱老人标语
2014/06/21 职场文书
国际贸易实训报告
2014/11/05 职场文书
2014年医院工作总结
2014/11/20 职场文书
先进基层党组织材料
2014/12/25 职场文书
聊聊golang中多个defer的执行顺序
2021/05/08 Golang
浅谈Python响应式类库RxPy
2021/06/14 Python
MySQL中utf8mb4排序规则示例
2021/08/02 MySQL
Redis分布式锁Redlock的实现
2021/08/07 Redis
python中pycryto实现数据加密
2022/04/29 Python