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的栏目导航程序
Oct 09 PHP
Session的工作方式
Oct 09 PHP
解决中英文字符串长度问题函数
Jan 16 PHP
PHP管理内存函数 memory_get_usage()使用介绍
Sep 23 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
May 04 PHP
PHP中error_log()函数的使用方法
Jan 20 PHP
php生成二维码
Aug 10 PHP
php+flash+jQuery多图片上传源码分享
Jul 27 PHP
php微信开发之图片回复功能
Jun 14 PHP
PHP中的self关键字详解
Jun 23 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
Aug 03 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 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
正则表达式语法
2006/10/09 Javascript
PHP分页详细讲解(有实例)
2013/10/30 PHP
自己写了一个php检测文件编码的函数
2014/04/21 PHP
PHP人民币金额转大写实例代码
2015/10/02 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
javascript获取xml节点的最大值(实现代码)
2013/12/11 Javascript
用js代码改变单选框选中状态的简单实例
2013/12/18 Javascript
jquery增加和删除元素的方法
2015/01/14 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
jQuery Ajax实现跨域请求
2017/01/21 Javascript
Ionic 2 实现列表滑动删除按钮的方法
2017/01/22 Javascript
jQuery弹出层插件popShow用法示例
2017/01/23 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
python装饰器实例大详解
2017/10/25 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
Python爬虫requests库多种用法实例
2020/05/28 Python
python如何实现图片压缩
2020/09/11 Python
日本即尚网:JSHOPPERS.com(支持中文)
2019/12/03 全球购物
判断单链表中是否存在环
2012/07/16 面试题
工程专业应届生求职信
2014/02/19 职场文书
员工生日活动方案
2014/08/24 职场文书
2014年检验科工作总结
2014/11/22 职场文书
五年级小学生评语
2014/12/26 职场文书
幼师小班个人总结
2015/02/12 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
2015年公民道德宣传日活动总结
2015/03/23 职场文书
2015年店长个人工作总结
2015/10/23 职场文书
Java面试题冲刺第十九天--数据库(4)
2021/08/07 Java/Android
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python