php强制下载类型的实现代码


Posted in PHP onApril 21, 2011
function downloadFile($file){ 
/*Coded by Alessio Delmonti*/         
        $file_name = $file; 
        $mime = 'application/force-download'; 
        header('Pragma: public');       // required 
        header('Expires: 0');           // no cache 
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
        header('Cache-Control: private',false); 
        header('Content-Type: '.$mime); 
        header('Content-Disposition: attachment; filename="'.basename($file_name).'"'); 
        header('Content-Transfer-Encoding: binary'); 
        header('Connection: close'); 
        readfile($file_name);           // push it out 
        exit(); 
}

php将文件下载下来而不是超链接下载,这样可以减少盗链的情况!将文件给浏览器让浏览器下载

以txt类型为例

由于现在的浏览器已经可以识别txt文档格式,如果只给txt文档做一个文字链接的话,点击后只是打开一个新窗口显示txt文件的内容,并不能实现点击下载的目的。当然这个问题的解决办法也可以是将txt文件改名为浏览器不认识的文件(比如rar),这样的话,由于浏览器不能识别rar类型的文件,只能让用户下载了。还有一种办法,就是利用代码通过header设置文档的格式来实现点击下载的目的。
PHP代码如下:

$filename = '/path/'.$_GET['file'].'.txt'; //文件路径 
header("Content-Type: application/force-download"); 
header("Content-Disposition: attachment; filename=".basename($filename)); 
readfile($filename);

简要说明:
第一个header函数设置Content-Type的值为application/force-download;
第二个header函数设置要下载的文件。注意这里的filename是不包含路径的文件名,filename的值将来就是点击下载后弹出对话框里面的文件名,如果带路径的话,弹出对话框的文件名就是未知的;
最后通过readfile函数,将文件流输出到浏览器,这样就实现了txt文件的下载。
PHP 相关文章推荐
php 文本文件的读取效率
Feb 10 PHP
php入门之连接mysql数据库的一个类
Apr 21 PHP
php eval函数用法总结
Oct 31 PHP
PHP字符串中特殊符号的过滤方法介绍
Feb 18 PHP
thinkphp使用literal防止模板标签被解析的方法
Nov 22 PHP
php动态绑定变量的用法
Jun 16 PHP
浅析Yii2中GridView常见操作
Apr 22 PHP
php使用ffmpeg获取视频信息并截图的实现方法
May 03 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
Oct 13 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
微信小程序发送订阅消息的方法(php 为例)
Oct 30 PHP
ThinkPHP5与单元测试PHPUnit使用详解
Feb 23 PHP
PHP在字符断点处截断文字的实现代码
Apr 21 #PHP
PHP SEO优化之URL优化方法
Apr 21 #PHP
PHP运行时强制显示出错信息的代码
Apr 20 #PHP
PHP大批量数据操作时临时调整内存与执行时间的方法
Apr 20 #PHP
PHP中Date()时间日期函数的使用方法小结
Apr 20 #PHP
PHP5中虚函数的实现方法分享
Apr 20 #PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
Apr 20 #PHP
You might like
php操作mysql数据库的基本类代码
2014/02/25 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
PHP实现的分页类定义与用法示例
2017/07/05 PHP
Laravel 数据库加密及数据库表前缀配置方法
2019/10/10 PHP
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
Angular学习笔记之angular的$filter服务浅析
2016/11/12 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
python实现的守护进程(Daemon)用法实例
2015/06/02 Python
基于python时间处理方法(详解)
2017/08/14 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
Python实现矩阵加法和乘法的方法分析
2017/12/19 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
对python打乱数据集中X,y标签对的方法详解
2018/12/14 Python
15行Python代码实现网易云热门歌单实例教程
2019/03/10 Python
python 进程的几种创建方式详解
2019/08/29 Python
pycharm显示远程图片的实现
2019/11/04 Python
Python笔记之工厂模式
2019/11/20 Python
Python调用Windows API函数编写录音机和音乐播放器功能
2020/01/05 Python
HTML5为输入框添加语音输入功能的实现方法
2017/02/06 HTML / CSS
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
ghd法国官方网站:英国最受欢迎的美发工具品牌
2019/04/18 全球购物
世界上最大的艺术社区:SAA
2020/12/30 全球购物
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
逃课上网检讨书
2014/02/20 职场文书
公证委托书模板
2014/04/03 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书