• 技术文章 >后端开发 >PHP问题

    php下载文件出现乱码怎么解决

    VV2020-11-06 14:04:47原创417

    php下载文件出现乱码的解决方法:首先在下载文件之前使用ob_clean函数清空输出缓冲区;然后利用flush函数刷新输出缓冲;最后下载文件即可。

    解决方法:

    下载之前先使用如下两个函数进行处理即可。

    (推荐教程:java课程

    flush — 刷新输出缓冲

    ob_clean — 清空(擦掉)输出缓冲区

    此函数用来丢弃输出缓冲区中的内容。

    此函数不会销毁输出缓冲区,而像 ob_end_clean() 函数会销毁输出缓冲区。

    代码示例:

    // 文件名不要用中文//fname为要下载的文件名
        //$fpath为下载文件所在文件夹,默认是downlod
        function download($fname,$fpath="download/"){        //避免中文文件名出现检测不到文件名的情况,进行转码utf-8->gbk
            $filename=iconv('utf-8', 'gb2312', $fname);        $path=$fpath.$filename;        if(!file_exists($path)){//检测文件是否存在
                echo "文件不存在!";            die();
            }        $fp=fopen($path,'r');//只读方式打开
            $filesize=filesize($path);//文件大小
    
            //返回的文件(流形式)
            header("Content-type: application/octet-stream");        //按照字节大小返回
            header("Accept-Ranges: bytes");        //返回文件大小
            header("Accept-Length: $filesize");        //这里客户端的弹出对话框,对应的文件名
            header("Content-Disposition: attachment; filename=".$filename);        //================重点====================
            ob_clean();
            flush();        //=================重点===================
            //设置分流
            $buffer=1024;        //来个文件字节计数器
            $count=0;        while(!feof($fp)&&($filesize-$count>0)){            $data=fread($fp,$buffer);            $count+=$data;//计数
                echo $data;//传数据给浏览器端
            }
    
            fclose($fp);
    
        }
    
    
        download("CGEX脚本清单.doc");

    相关推荐:php培训

    以上就是php下载文件出现乱码怎么解决的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php 文件 乱码
    上一篇:php实现跳转传值有什么方法 下一篇:php安装memcache扩展的方法是什么
    大前端线上培训班

    相关文章推荐

    • java下载文件的文件名乱码问题• php下载文件的方法【总结】• php下载文件无法打开怎么办• php下载文件出现乱码怎么办

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网