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脚本的10个技巧(3)
Oct 09 PHP
PHP 多进程 解决难题
Jun 22 PHP
PHP include_path设置技巧分享
Jul 03 PHP
php购物车实现代码
Oct 10 PHP
php UBB 解析实现代码
Nov 27 PHP
360通用php防护代码(使用操作详解)
Jun 18 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
Jun 23 PHP
PHP测试成功的邮件发送案例
Oct 26 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
Dec 28 PHP
PHP实现简单实用的分页类代码
Apr 08 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
Aug 17 PHP
PHP数组Key强制类型转换实现原理解析
Sep 01 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函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2011/12/05 PHP
浅析php过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
php自定义的格式化时间示例代码
2013/12/05 PHP
PHP多线程类及用法实例
2014/12/03 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
Jquery Ajax请求代码(2)
2011/01/07 Javascript
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
2013/02/22 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
2016/03/11 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
2017/10/26 Javascript
Vue-cli配置打包文件本地使用的教程图解
2018/08/02 Javascript
keep-alive不能缓存多层级路由菜单问题解决
2020/03/10 Javascript
Python3 修改默认环境的方法
2019/02/16 Python
PyQt5固定窗口大小的方法
2019/06/18 Python
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
Python 异常处理Ⅳ过程图解
2019/10/18 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
经济信息管理专业大学生求职信
2013/09/27 职场文书
仪器仪表检测毕业生自荐信
2013/10/31 职场文书
我们的节日端午节活动方案
2014/03/02 职场文书
考核工作实施方案
2014/03/30 职场文书
出国签证在职证明
2014/09/20 职场文书
政风行风评议工作总结
2014/10/21 职场文书
幼儿园小班见习报告
2014/10/31 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
清明祭英烈活动总结
2015/05/11 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
《秋天的怀念》教学反思
2016/02/17 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
Python使用UDP实现720p视频传输的操作
2021/04/24 Python