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 mssql 时间格式问题
Jan 13 PHP
php 处理上百万条的数据库如何提高处理查询速度
Feb 08 PHP
学习php笔记 字符串处理
Oct 19 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
Jun 03 PHP
探讨fckeditor在Php中的配置详解
Jun 08 PHP
PHP 如何利用phpexcel导入数据库
Aug 24 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
php简单判断文本编码的方法
Jul 30 PHP
PHP合并数组的2种方法小结
Nov 24 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
Apr 27 PHP
Laravel框架定时任务2种实现方式示例
Dec 08 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
Oct 09 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二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
ThinkPHP中关联查询实例
2014/12/02 PHP
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
2010/05/13 Javascript
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
读jQuery之十三 添加事件和删除事件的核心方法
2011/08/23 Javascript
JavaScript判断文件上传类型的方法
2014/09/02 Javascript
JavaScript中诡异的delete操作符
2015/03/12 Javascript
JS动画效果打开、关闭层的实现方法
2015/05/09 Javascript
location.hash保存页面状态的技巧
2016/04/28 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
Python程序语言快速上手教程
2012/07/18 Python
python判断windows系统是32位还是64位的方法
2015/05/11 Python
详解Python的Django框架中的中间件
2015/07/24 Python
python批量创建指定名称的文件夹
2019/03/21 Python
详解Python数据分析--Pandas知识点
2019/03/23 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
css3 实现元素弧线运动的示例代码
2020/04/24 HTML / CSS
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
eDreams巴西:廉价机票,酒店优惠和度假套餐
2017/04/14 全球购物
ONLY德国官方在线商店:购买时尚女装
2017/09/21 全球购物
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
入党思想汇报怎么写
2014/04/03 职场文书
2014县委书记四风对照检查材料思想汇报
2014/09/21 职场文书
简易离婚协议书(范本)
2014/10/25 职场文书
银行给客户的感谢信
2015/01/23 职场文书
2015年个人思想总结
2015/03/09 职场文书
大学校园招聘会感想
2015/08/10 职场文书
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python