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异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
May 19 PHP
php Smarty初体验二 获取配置信息
Aug 08 PHP
win7+apache+php+mysql环境配置操作详解
Jun 10 PHP
迅速确定php多维数组的深度的方法
Jan 07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
Jun 25 PHP
php基于mcrypt的加密解密实例
Oct 27 PHP
PHP代码实现爬虫记录――超管用
Jul 31 PHP
PHP简单实现无限级分类的方法
May 13 PHP
Linux平台PHP5.4设置FPM线程数量的方法
Nov 09 PHP
PHP一致性hash分布式算法封装类定义与用法示例
Aug 04 PHP
Laravel 创建指定表 migrate的例子
Oct 09 PHP
php7 list()、session及其他模块的修改实例分析
May 25 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应用提速面面观
2006/10/09 PHP
用PHP连接Oracle for NT 远程数据库
2006/10/09 PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
PHP删除非空目录的函数代码小结
2013/02/28 PHP
javascript面向对象之Javascript 继承
2010/05/04 Javascript
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
详谈nodejs异步编程
2014/12/04 NodeJs
javascript中String对象的slice()方法分析
2014/12/20 Javascript
jQuery中fadeOut()方法用法实例
2014/12/24 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
js实现二级菜单渐隐显示
2015/11/03 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
JavaScript面向对象的程序设计(犯迷糊的小羊)
2018/05/27 Javascript
通过JS深度判断两个对象字段相同
2019/06/14 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
JS array数组检测方式解析
2020/05/19 Javascript
通过实例解析jQ Ajax操作相关原理
2020/09/23 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
关于Python-faker的函数效果一览
2019/11/28 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
使用HTML5 Canvas API绘制弧线的教程
2016/03/22 HTML / CSS
新员工试用期自我鉴定
2014/04/17 职场文书
机械设备与数控技术专业求职信
2014/08/10 职场文书
婚庆公司计划书
2014/09/15 职场文书
2014年体育部工作总结
2014/11/13 职场文书
优秀校长事迹材料
2014/12/24 职场文书
质量保证书格式
2015/02/27 职场文书
小学运动会报道稿
2015/07/22 职场文书
总经理聘用协议书
2015/09/21 职场文书
Python学习之迭代器详解
2022/04/01 Python
python中filter,map,reduce的作用
2022/06/10 Python