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 相关文章推荐
如何做到多笔资料的同步
Oct 09 PHP
利用php来自动调用不同服务器上的flash
Oct 09 PHP
谈谈新手如何学习PHP
Dec 14 PHP
yii框架配置默认controller和action示例
Apr 30 PHP
PHP遍历目录并返回统计目录大小
Jun 09 PHP
wordpress安装过程中遇到中文乱码的处理方法
Apr 21 PHP
php中关于socket的系列函数总结
May 18 PHP
PHP通过串口实现发送短信
Jul 08 PHP
php实现可运算的验证码
Nov 10 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
Aug 10 PHP
PHP验证类的封装与使用方法详解
Jan 10 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
Mar 22 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
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
PHP curl使用实例
2015/07/02 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
php上传excel表格并获取数据
2017/04/27 PHP
javascript function、指针及内置对象
2009/02/19 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
使用jquery+iframe做一个ajax上传效果(实例)
2017/08/24 jQuery
详解10分钟学会vue滚动行为
2017/09/21 Javascript
详解Vue3.0 前的 TypeScript 最佳入门实践
2019/06/18 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
JS实现判断移动端PC端功能
2020/02/21 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
python过滤中英文标点符号的实例代码
2019/07/15 Python
python3图片文件批量重命名处理
2019/10/31 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
django Model层常用验证器及自定义验证器详解
2020/07/15 Python
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
html5实现九宫格抽奖可固定抽中某项奖品
2020/06/15 HTML / CSS
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
安全事故检讨书
2014/01/18 职场文书
运动会致辞稿50字
2014/02/04 职场文书
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
护士2014年终工作总结
2014/11/11 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
创业计划书之o2o水果店
2019/08/30 职场文书
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis