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 相关文章推荐
PHP4实际应用经验篇(6)
Oct 09 PHP
让你同时上传 1000 个文件 (二)
Oct 09 PHP
将文件夹压缩成zip文件的php代码
Dec 14 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
Apr 23 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
Oct 15 PHP
php中magic_quotes_gpc对unserialize的影响分析
Dec 16 PHP
php简单日历函数
Oct 28 PHP
php socket通信(tcp/udp)实例分析
Feb 14 PHP
php文件上传后端处理小技巧
May 22 PHP
php实现的简单数据库操作Model类
Nov 16 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
Jul 19 PHP
Thinkphp 5.0实现微信企业付款到零钱
Sep 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
对盗链说再见...
2006/10/09 PHP
网站页面自动跳转实现方法PHP、JSP(下)
2010/08/01 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
利用iscroll4实现轮播图效果实例代码
2017/01/11 Javascript
简单的vue-resourse获取json并应用到模板示例
2017/02/10 Javascript
基于Vue2x的图片预览插件的示例代码
2018/05/14 Javascript
Vue使用.sync 实现父子组件的双向绑定数据问题
2019/04/04 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
JavaScript监听触摸事件代码实例
2019/12/30 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
python实现ip查询示例
2014/03/26 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
2018/07/07 Python
Python实现的建造者模式示例
2018/08/06 Python
基于python实现检索标记敏感词并输出
2020/05/07 Python
在keras中实现查看其训练loss值
2020/06/16 Python
Python分类测试代码实例汇总
2020/07/23 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
如何利用python正则表达式匹配版本信息
2020/12/09 Python
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
金融专业应届生求职信
2013/11/02 职场文书
护理专科毕业推荐信
2013/11/10 职场文书
生物技术专业毕业生求职信范文
2013/12/14 职场文书
光学与应用专业毕业生求职信
2014/09/01 职场文书
庆元旦演讲稿
2014/09/15 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
市场部岗位职责范本
2015/04/15 职场文书
学校开除通知书
2015/04/25 职场文书
女方离婚起诉书
2015/05/18 职场文书
经典人生语录分享:不畏将来,不念过去,笑对当下
2019/12/12 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS
Python os和os.path模块详情
2022/04/02 Python