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引擎的发展 [15]
Oct 09 PHP
PHP学习之PHP变量
Oct 09 PHP
php 随机生成10位字符代码
Mar 26 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
Sep 25 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
Nov 07 PHP
百度地图API应用之获取用户的具体位置
Jun 10 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
Jun 26 PHP
PHP 5.3新增魔术方法__invoke概述
Jul 23 PHP
PHP实现WebService的简单示例和实现步骤
Mar 27 PHP
php实现的单一入口应用程序实例分析
Sep 23 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
Mar 25 PHP
PHP 将dataurl转成图片image方法总结
Oct 14 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可逆加密函数(分享)
2013/06/06 PHP
php用ini_get获取php.ini里变量值的方法
2015/03/04 PHP
PHP使用PDO连接ACCESS数据库
2015/03/05 PHP
php compact 通过变量创建数组
2016/11/15 PHP
利用PHP抓取百度阅读的方法示例
2016/12/18 PHP
laravel orm 关联条件查询代码
2019/10/21 PHP
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
2014/05/05 Javascript
jQuery实现Div拖动+键盘控制综合效果的方法
2015/03/10 Javascript
javascript实现标签切换代码示例
2016/05/22 Javascript
JS实现弹出居中的模式窗口示例
2016/06/20 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
基于游标的分页接口实现代码示例
2018/11/12 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
vueScroll实现移动端下拉刷新、上拉加载
2019/03/22 Javascript
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
pip指定python位置安装软件包的方法
2019/07/12 Python
Python学习笔记之For循环用法详解
2019/08/14 Python
Python 类属性与实例属性,类对象与实例对象用法分析
2019/09/20 Python
python3注册全局热键的实现
2020/03/22 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
优衣库英国官网:UNIQLO英国
2016/12/25 全球购物
校园之星获奖感言
2014/01/29 职场文书
日语专业毕业生自荐书
2014/06/18 职场文书
装修施工安全责任书
2014/07/24 职场文书
党务工作者主要事迹材料
2015/11/03 职场文书
深度学习小工程练习之垃圾分类详解
2021/04/14 Python
日元符号 ¥
2022/02/17 杂记