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 信息采集程序代码
Mar 17 PHP
php快速url重写 更新版[需php 5.30以上]
Apr 20 PHP
yii实现CheckBox复选框在同一行显示的方法
Dec 03 PHP
thinkphp3.0输出重复两次的解决方法
Dec 19 PHP
php自动给网址加上链接的方法
Jun 02 PHP
PHP浮点数的一个常见问题
Mar 10 PHP
Yii使用migrate命令执行sql语句的方法
Mar 15 PHP
thinkPHP模板中函数的使用方法示例
Nov 30 PHP
php获取linux命令结果的实例
Mar 13 PHP
PHP获取当前日期及本周一是几月几号的方法
Mar 28 PHP
php读取和保存base64编码的图片内容
Apr 22 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
Aug 30 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
建立动态的WML站点(二)
2006/10/09 PHP
dedecms中常见问题修改方法总结
2007/03/21 PHP
php入门学习知识点一 PHP与MYSql连接与查询
2011/07/14 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
浅析PHP文件下载原理
2014/12/25 PHP
php实现统计网站在线人数的方法
2015/05/12 PHP
jquery 指南/入门基础
2007/11/30 Javascript
jquery 提交值不为空的元素示例代码
2013/05/10 Javascript
Javascript简单实现可拖动的div
2013/10/22 Javascript
当json键为数字时的取值方法解析
2013/11/15 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
详解JavaScript的流程控制语句
2015/11/30 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
Vue.js实现一个自定义分页组件vue-paginaiton
2016/09/05 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
vue组件name的作用小结
2018/05/23 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
Python合并多个装饰器小技巧
2015/04/28 Python
Python3实现从文件中读取指定行的方法
2015/05/22 Python
Python实现查找系统盘中需要找的字符
2015/07/14 Python
Python探索之Metaclass初步了解
2017/10/28 Python
浅谈Python 敏感词过滤的实现
2019/08/15 Python
使用Python实现Wake On Lan远程开机功能
2020/01/22 Python
Python实现自动签到脚本功能
2020/08/20 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
简述Html5 IphoneX 适配方法
2018/02/08 HTML / CSS
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
竟聘演讲稿范文
2013/12/31 职场文书
会计岗位职责模板
2014/03/12 职场文书
教学改革实施方案
2014/03/31 职场文书
优秀应届本科生求职信
2014/07/19 职场文书
情人节单身感言
2015/08/03 职场文书
利用JavaScript写一个简单计算器
2021/11/27 Javascript
Vue3中toRef与toRefs的区别
2022/03/24 Vue.js