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 相关文章推荐
用Zend Encode编写开发PHP程序
Oct 09 PHP
Snoopy类使用小例子
Apr 15 PHP
php trim 去除空字符的定义与语法介绍
May 31 PHP
php安全之直接用$获取值而不$_GET 字符转义
Jun 03 PHP
PHP json格式和js json格式 js跨域调用实现代码
Sep 08 PHP
php增删改查示例自己写的demo
Sep 04 PHP
thinkphp的URL路由规则与配置实例
Nov 26 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
Dec 18 PHP
PHP浮点比较大小的方法
Feb 14 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
Apr 27 PHP
PHP实现的文件上传类与用法详解
Jul 05 PHP
PHP使用两个栈实现队列功能的方法
Jan 15 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 一个随机字符串生成代码
2010/05/26 PHP
简单理解PHP的面向对象编程方式
2016/05/17 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
javascript indexOf函数使用说明
2008/07/03 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
2012/01/15 Javascript
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
JavaScript享元模式原理与用法实例详解
2020/03/09 Javascript
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
pygame学习笔记(4):声音控制
2015/04/15 Python
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
基于Python列表解析(列表推导式)
2018/06/23 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
利用Python实现手机短信监控通知的方法
2019/07/22 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
毕业生怎样写好自荐信
2013/11/11 职场文书
公司培训心得体会
2014/01/03 职场文书
早餐连锁店计划书
2014/01/08 职场文书
巧克力蛋糕店创业计划书
2014/01/14 职场文书
总会计师岗位职责
2014/02/19 职场文书
运动会通讯稿500字
2014/02/20 职场文书
cf收人广告词
2014/03/14 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
学校运动会报道稿
2014/09/23 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
打架检讨书
2015/01/27 职场文书
秋季运动会开幕词
2015/01/28 职场文书
员工给公司的建议书
2019/06/24 职场文书