网站首页php

PHP下载文件,打开乱码问题处理

发布时间:2017-03-28 18:50:25编辑:slayer.hover阅读(3749)

        在系统测试时出现,导出的Excel文件打开后都报异常。开始以为是下载代码出的问题,换了N种下载方式均无效。

    在网上搜索答案后,发现需要加下面两行:

        ob_clean();
        flush();

    恢复正常后的下载代码如下所示:

    private function downfile($filename)
    {
        $fileinfo = pathinfo($filename);
        header('Content-type: application/x-'.$fileinfo['extension']);
        header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
        header('Content-Length: '.filesize($filename));
        
        ob_clean();
        flush();
        
        readfile($filename);
    }


    这两行代码的意义:ob_clean()后,缓冲区中的内容被清除了。

    用PHP下载二进制的文件,如果前面有输出的话,相当于正常文件前面会多出一些内容,所以会出错,
    清除前置输出内容后,就是要下载的纯净的二进制文件了。


评论