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 相关文章推荐
论坛头像随机变换代码
Oct 09 PHP
让你的网站首页自动选择语言转跳
Dec 06 PHP
PHP5中使用PDO连接数据库的方法
Aug 01 PHP
php simplexmlElement操作xml的命名空间实现代码
Jan 04 PHP
那些年我们错过的魔术方法(Magic Methods)
Jan 14 PHP
discuz目录文件资料汇总
Dec 30 PHP
php处理带有中文URL的方法
Jul 11 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
Oct 20 PHP
php传值方式和ajax的验证功能
Mar 27 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
Apr 18 PHP
PHP实现动态创建XML文档的方法
Mar 30 PHP
thinkPHP框架实现生成条形码的方法示例
Jun 06 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中实现简单的ACL 完结篇
2011/09/07 PHP
PHP的加密方式及原理
2012/06/14 PHP
PHP四舍五入精确小数位及取整
2014/01/14 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
php ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
javascript 函数及作用域总结介绍
2013/11/12 Javascript
javascript事件模型实例分析
2015/01/30 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
jquery if条件语句的写法
2016/05/19 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
D3.js中强制异步文件读取同步的几种方法
2017/02/06 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
JavaScript使用Ajax上传文件的示例代码
2017/08/10 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
2017/11/08 jQuery
JavaScript寄生组合式继承实例详解
2018/01/06 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
如何使用vuex实现兄弟组件通信
2018/11/02 Javascript
原生js实现日历效果
2020/03/02 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
Python yield与实现方法代码分析
2018/02/06 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
Python获取指定网段正在使用的IP
2020/12/14 Python
行政助理求职自荐信
2013/10/26 职场文书
教育学专业毕业生的自我评价
2013/11/21 职场文书
服装机修工岗位职责
2013/12/26 职场文书
物理教育专业求职信
2014/06/25 职场文书
暑期学习心得体会
2014/09/02 职场文书
行政复议答复书
2015/07/01 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书