php强制文件下载而非在浏览器打开的自定义函数分享


Posted in PHP onMay 08, 2014

有时我们希望如图片、文本文档、网页、mp3、pdf等内容,当点击对应链接时直接下载,而不是在网页上显示,那么就需要强制设置header头信息。以下为一段不会产生乱码的php函数实现代码,其他程序语言也可参考之编写实现。

/**
 * Downloader
 *
 * @param $archivo
 *  path al archivo
 * @param $downloadfilename
 *  (null|string) el nombre que queres usar para el archivo que se va a descargar.
 *  (si no lo especificas usa el nombre actual del archivo)
 *
 * @return file stream
 */
function download_file($archivo, $downloadfilename = null) {
    if (file_exists($archivo)) {
        $downloadfilename = $downloadfilename !== null ? $downloadfilename : basename($archivo);
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename=' . $downloadfilename);
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
        header('Content-Length: ' . filesize($archivo));
        ob_clean();
        flush();
        readfile($archivo);
        exit;
    }
}
PHP 相关文章推荐
PHP 强制性文件下载功能的函数代码(任意文件格式)
May 26 PHP
PHP提取字符串中的图片地址[正则表达式]
Nov 12 PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
Apr 11 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
功能强大的PHP POST提交数据类
Jul 15 PHP
php基于websocket搭建简易聊天室实践
Oct 24 PHP
php监测数据是否成功插入到Mysql数据库的方法
Nov 25 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
Aug 02 PHP
laravel添加角色和模糊搜索功能的实现代码
Jun 22 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
May 08 #PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
May 08 #PHP
PHP中把stdClass Object转array的几个方法
May 08 #PHP
PHP批量检测并去除文件BOM头代码实例
May 08 #PHP
php代码审计比较有意思的例子
May 07 #PHP
一个php短网址的生成代码(仿微博短网址)
May 07 #PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
May 07 #PHP
You might like
php max_execution_time执行时间问题
2011/07/17 PHP
PHP读取xml方法介绍
2013/01/12 PHP
yii操作cookie实例简介
2014/07/09 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
2015/04/22 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
基于jquery的$.ajax async使用
2011/10/19 Javascript
解决js数据包含加号+通过ajax传到后台时出现连接错误
2013/08/01 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
BootStrap扔进Django里的方法详解
2016/05/13 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
详解使用angularjs的ng-options时如何设置默认值(初始值)
2017/07/18 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
vue cli安装使用less的教程详解
2019/07/12 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
Python os模块介绍
2014/11/30 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
python中threading开启关闭线程操作
2020/05/02 Python
python学习笔记之多进程
2020/08/06 Python
html5跳转小程序wx-open-launch-weapp踩坑
2020/12/02 HTML / CSS
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
幼儿园英语教学反思
2014/01/30 职场文书
2015年乡镇平安建设工作总结
2015/05/13 职场文书
贷款工作证明模板
2015/06/12 职场文书
2019餐饮行业创业计划书!
2019/06/27 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
zabbix agent2 监控oracle数据库的方法
2021/05/13 Oracle
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python