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制作静态网站的模板框架(四)
Oct 09 PHP
Base64在线编码解码实现代码 演示与下载
Jan 08 PHP
兼容firefox,chrome的网页灰度效果
Aug 08 PHP
php调用shell的方法
Nov 05 PHP
ThinkPHP模版引擎之变量输出详解
Dec 05 PHP
PHP转盘抽奖接口实例
Feb 09 PHP
php 获取文件行数的方法总结
Oct 11 PHP
简单实现PHP留言板功能
Dec 21 PHP
php实现文章评论系统
Feb 18 PHP
PHP+jQuery实现双击修改table表格功能示例
Feb 21 PHP
PHP中命名空间的使用例子
Mar 22 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
Mar 04 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的ajax框架xajax入门与试用介绍
2010/12/19 PHP
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
php中session与cookie的比较
2015/01/27 PHP
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
jquery+ajax验证不通过也提交表单问题处理
2014/12/12 Javascript
javascript中$(function() {});写与不写有哪些区别
2015/08/10 Javascript
js实现文本框支持加减运算的方法
2015/08/19 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
完善的jquery处理机制
2016/02/21 Javascript
省市联动效果的简单实现代码(推荐)
2016/06/06 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
2019/09/01 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
python操作xml文件详细介绍
2014/06/09 Python
python实现随机梯度下降法
2020/03/24 Python
python实现名片管理系统
2018/11/29 Python
python实现单链表的方法示例
2019/09/03 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
Ralph Lauren意大利官方网站:时尚界最负盛名的品牌之一
2018/10/18 全球购物
电子商务专业学生的自我鉴定
2013/11/28 职场文书
大学生求职自我评价
2014/01/16 职场文书
转预备党员政审材料
2014/02/06 职场文书
投标人廉洁自律承诺书
2014/05/26 职场文书
党的群众路线教育实践活动个人整改措施
2014/10/27 职场文书
财务人员岗位职责
2015/02/03 职场文书
慈善献爱心倡议书
2015/04/27 职场文书
JS class语法糖的深入剖析
2022/07/07 Javascript