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

 更新时间:2014年05月08日 09:37:22   作者:  
这篇文章主要介绍了php强制文件下载而非在浏览器打开的自定义函数分享,需要的朋友可以参考下

有时我们希望如图片、文本文档、网页、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遍历文件夹下的所有文件和子文件夹示例

    这篇文章主要介绍了php遍历文件夹下的所有文件和子文件夹示例,这里提供二个方法,需要的朋友可以参考下
    2014-03-03
  • 详解php中的implements 使用

    详解php中的implements 使用

    php类中接口的应用关键字是interface、implements了,接口是一种成员属性全部为抽象或常量的特殊抽象类,implements主要是对类名,类所拥有的方法,以及所传参数起约束和规范做用,有点像 abstract 抽象类
    2017-06-06
  • php header函数的常用http头设置

    php header函数的常用http头设置

    这篇文章主要介绍了php header函数的常用http头设置,本文直接给出代码实例,代码中包含详细注释,需要的朋友可以参考下
    2015-06-06
  • PHP中读取文件的8种方法和代码实例

    PHP中读取文件的8种方法和代码实例

    这篇文章主要介绍了PHP中读取文件的8种方法和代码实例,本文总结了PHP中读取文件的8个函数,每一个都附有使用例子及注意事项等,需要的朋友可以参考下
    2014-08-08
  • Laravel配置全局公共函数的方法步骤

    Laravel配置全局公共函数的方法步骤

    这篇文章主要给大家介绍了关于Laravel配置全局公共函数的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Laravel具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • thinkphp3.2.2前后台公用类架构问题分析

    thinkphp3.2.2前后台公用类架构问题分析

    这篇文章主要介绍了thinkphp3.2.2前后台公用类架构问题,以实例形式较为详细的分析了前后台公用类的简单调用方法,非常具有实用价值,需要的朋友可以参考下
    2014-11-11
  • php中apc缓存使用示例

    php中apc缓存使用示例

    APC全称Alternative PHP Cache,可以缓存php的源码文件,也可以缓存用户数据,下面我们就安装一下他,看看如何查询缓存、修改缓存、删除缓存等功能
    2013-12-12
  • PHP 翻页 实例代码

    PHP 翻页 实例代码

    PHP 翻页 实例代码,大家可以参考下。
    2009-08-08
  • 超小PHP小马小结(方便查找后门的朋友)

    超小PHP小马小结(方便查找后门的朋友)

    超小PHP小马小结,方便查找后门的朋友,发现相关类似代码可以直接封杀了
    2012-05-05
  • laravel 使用事件系统统计浏览量的实现

    laravel 使用事件系统统计浏览量的实现

    今天小编就为大家分享一篇laravel 使用事件系统统计浏览量的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10

最新评论