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
php 5.3.5安装memcache注意事项小结
Apr 12 PHP
PHP实现多图片上传类实例
Jul 26 PHP
PHP模板引擎smarty详细介绍
May 26 PHP
PHP实现的构造sql语句类实例
Feb 03 PHP
PHP常用文件操作函数和简单实例分析
Jun 03 PHP
PHP实现链式操作的原理详解
Sep 16 PHP
Yii2实现增删改查后留在当前页的方法详解
Jan 13 PHP
php获取linux命令结果的实例
Mar 13 PHP
PHP新特性详解之命名空间、性状与生成器
Jul 18 PHP
在thinkphp5.0路径中实现去除index.php的方式
Oct 16 PHP
如何在centos8自定义目录安装php7.3
Nov 28 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遍历目录viewDir函数
2009/12/15 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
php单一接口的实现方法
2015/06/20 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
ECMAScript 基础知识
2007/06/29 Javascript
js jquery数组介绍
2012/07/15 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
Nodejs在局域网配置https访问的实现方法
2020/10/17 NodeJs
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
Python中使用dom模块生成XML文件示例
2015/04/05 Python
python中map、any、all函数用法分析
2015/04/21 Python
python中快速进行多个字符替换的方法小结
2016/12/15 Python
更改Ubuntu默认python版本的两种方法python-> Anaconda
2016/12/18 Python
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
Windows 7下Python Web环境搭建图文教程
2018/03/20 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
解决Python中回文数和质数的问题
2019/11/24 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
python中安装django模块的方法
2020/03/12 Python
Python tornado上传文件的功能
2020/03/26 Python
基于python判断字符串括号是否闭合{}[]()
2020/09/21 Python
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
世界上最大的乐谱选择:Sheet Music Plus
2020/01/18 全球购物
智乐游戏测试笔试题
2014/05/21 面试题
党校学习自我鉴定
2014/02/24 职场文书
药剂专业毕业生求职信
2014/06/24 职场文书
十佳党员事迹材料
2014/08/28 职场文书
医学检验专业自荐信
2014/09/18 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
节水倡议书
2015/01/19 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android