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 相关文章推荐
用来解析.htpasswd文件的PHP类
Sep 05 PHP
PHP调用Linux的命令行执行文件压缩命令
Jan 27 PHP
php中生成随机密码的自定义函数代码
Oct 21 PHP
PHP内核探索:变量概述
Jan 30 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
PHP使用ob_start生成html页面的方法
Nov 07 PHP
php获取当月最后一天函数分享
Feb 02 PHP
Zend Framework教程之Autoloading用法详解
Mar 08 PHP
PHP实现限制IP访问的方法
Apr 20 PHP
PHP7 mongoDB扩展使用的方法分享
May 02 PHP
php面向对象重点知识分享
Sep 27 PHP
php pdo连接数据库操作示例
Nov 18 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下intval()和(int)转换使用与区别
2008/07/18 PHP
PHP调用JAVA的WebService简单实例
2014/03/11 PHP
linux下为php添加iconv模块的方法
2016/02/28 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
2019/02/28 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
学习js所必须要知道的一些
2007/03/07 Javascript
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
从0搭建vue-cli4脚手架
2020/06/17 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
python实现发送邮件及附件功能
2021/03/02 Python
Python机器学习之K-Means聚类实现详解
2018/02/22 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
用Python绘制漫步图实例讲解
2020/02/26 Python
HTML5的hidden属性兼容老浏览器的方法
2014/04/23 HTML / CSS
法国足球商店:Footcenter
2019/07/06 全球购物
酒店服务与管理毕业生求职信
2013/11/02 职场文书
四年级科学教学反思
2014/02/10 职场文书
医师定期考核实施方案
2014/05/07 职场文书
检察院起诉书
2015/05/20 职场文书
田径运动会通讯稿
2015/07/18 职场文书
门卫管理制度范本
2015/08/05 职场文书
高一军训感想
2015/08/07 职场文书
「Manga Time Kirara MAX」2022年5月号封面公开
2022/03/21 日漫
JS函数式编程实现XDM一
2022/06/16 Javascript