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 简单数组排序实现代码
Aug 05 PHP
PHP include_path设置技巧分享
Jul 03 PHP
深入PHP异步执行的详解
Jun 03 PHP
深入php函数file_get_contents超时处理的方法详解
Jun 03 PHP
php使用ICQ网关发送手机短信
Oct 30 PHP
php操作csv文件代码实例汇总
Sep 22 PHP
PHP中余数、取余的妙用
Jun 29 PHP
[原创]php简单隔行变色功能实现代码
Jul 09 PHP
PHP面向对象程序设计方法实例详解
Dec 24 PHP
php实现的中文分词类完整实例
Feb 06 PHP
PHP基于XMLWriter操作xml的方法分析
Jul 17 PHP
提高Laravel应用性能方法详解
Jun 24 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
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
PHP 模板高级篇总结
2006/12/21 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
通过5个php实例细致说明传值与传引用的区别
2012/08/08 PHP
奉献出一个封装的curl函数 便于调用(抓数据专用)
2013/07/22 PHP
php计算数组不为空元素个数的方法
2014/01/27 PHP
php自动更新版权信息显示的方法
2015/06/19 PHP
php7下的filesize函数
2019/09/30 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
javascript instanceof,typeof的区别
2010/03/24 Javascript
两种常用的javascript数组去重方法思路及代码
2013/03/26 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
Bootstrap表格使用方法详解
2017/02/17 Javascript
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
2018/09/27 Javascript
vue实现滑动超出指定距离回顶部功能
2019/07/31 Javascript
vue父子组件的通信方法(实例详解)
2019/11/10 Javascript
Quasar Input:type="number" 去掉上下小箭头 实现加减按钮样式功能
2020/04/09 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
2020/09/09 Javascript
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
2014/11/05 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
Python中字符串List按照长度排序
2019/07/01 Python
python redis 批量设置过期key过程解析
2019/11/26 Python
W Hamond官网:始于1979年的钻石专家
2020/07/20 全球购物
全球异乡人的跨境社交电商平台:Kouhigh口嗨网
2020/07/24 全球购物
自我评价怎么写正确呢?
2013/12/02 职场文书
村委会主任先进事迹
2014/01/15 职场文书
《月迹》教学反思
2014/02/19 职场文书
工会主席事迹材料
2014/06/03 职场文书
运动会拉拉队口号
2014/06/09 职场文书
农行心得体会
2014/09/02 职场文书
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python