使用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的类树(支持无限分类)
Oct 09 PHP
php入门教程 精简版
Dec 13 PHP
PHP实现的简单日历类
Nov 29 PHP
PHP使用递归生成文章树
Apr 21 PHP
分享ThinkPHP3.2中关联查询解决思路
Sep 20 PHP
php简单创建zip压缩文件的方法
Apr 30 PHP
你不知道的文件上传漏洞php代码分析
Sep 29 PHP
利用PHP生成CSV文件简单示例
Dec 21 PHP
thinkphp自定义权限管理之名称判断方法
Apr 01 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
May 12 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
Dec 31 PHP
PHP session垃圾回收机制实例分析
Jun 28 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) php 字符串相关应用
2010/03/05 PHP
LotusPhp笔记之:Logger组件的使用方法
2013/05/06 PHP
非常实用的php弹出错误警告函数扩展性强
2014/01/17 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
一个对于Array的简单扩展
2006/10/03 Javascript
javascript prototype 原型链
2009/03/12 Javascript
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
动态内存分配导致影响Javascript性能的问题
2018/12/18 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
python通过smpt发送邮件的方法
2015/04/30 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
Python实现登陆文件验证方法
2018/10/06 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
2018/12/22 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
Pytorch中膨胀卷积的用法详解
2020/01/07 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
就业表自我评价分享
2014/02/06 职场文书
亲戚结婚的请假条
2014/02/11 职场文书
初中英语演讲稿
2014/04/29 职场文书
自我查摆剖析材料
2014/10/11 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
Matplotlib可视化之添加让统计图变得简单易懂的注释
2021/06/11 Python
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技
Mysql中常用的join连接方式
2022/05/11 MySQL
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers