PHP使用文件流下载文件方法(附:解决下载文件内容乱码问题),_PHP教程

php中文网
发布: 2016-07-13 10:21:28
原创
1200人浏览过

php使用文件流下载文件方法(附:解决下载文件内容乱码问题),

记得高中时候做过游戏私服,那时候的游戏主页是用php写的,因为文件很固定,客户端,登陆器和一些小工具,文件数目也不是很多,所以都是直接把下载链接写死的,直接链接到本地服务器的文件目录,今天qq群有个朋友突然问我用文件流做php下载功能,顺手写了个小demo,代码很简单,注释也全,直接上代码吧~

 

Delphi 7应用编程150例 全书内容 CHM版
Delphi 7应用编程150例 全书内容 CHM版

Delphi 7应用编程150例 CHM全书内容下载,全书主要通过150个实例,全面、深入地介绍了用Delphi 7开发应用程序的常用方法和技巧,主要讲解了用Delphi 7进行界面效果处理、图像处理、图形与多媒体开发、系统功能控制、文件处理、网络与数据库开发,以及组件应用等内容。这些实例简单实用、典型性强、功能突出,很多实例使用的技术稍加扩展可以解决同类问题。使用本书最好的方法是通过学习掌握实例中的技术或技巧,然后使用这些技术尝试实现更复杂的功能并应用到更多方面。本书主要针对具有一定Delphi基础知识

Delphi 7应用编程150例 全书内容 CHM版 0
查看详情 Delphi 7应用编程150例 全书内容 CHM版

立即学习PHP免费学习笔记(深入)”;

1、flush — 刷新输出缓冲

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

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

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

注:上面2个函数可以解决PHP下载文件内容乱码

 

立即学习PHP免费学习笔记(深入)”;

<?<span>php

    </span><span>//</span><span>fname为要下载的文件名
    //$fpath为下载文件所在文件夹,默认是downlod</span>
    <span>function</span> download(<span>$fname</span>,<span>$fpath</span>="download/"<span>){

        </span><span>//</span><span>避免中文文件名出现检测不到文件名的情况,进行转码utf-8->gbk</span>
        <span>$filename</span>=<span>iconv</span>('utf-8', 'gb2312', <span>$fname</span><span>);
        </span><span>$path</span>=<span>$fpath</span>.<span>$filename</span><span>;
        </span><span>if</span>(!<span>file_exists</span>(<span>$path</span>)){<span>//</span><span>检测文件是否存在</span>
            <span>echo</span> "文件不存在!"<span>;
            </span><span>die</span><span>();
        }

        </span><span>$fp</span>=<span>fopen</span>(<span>$path</span>,'r');<span>//</span><span>只读方式打开</span>
        <span>$filesize</span>=<span>filesize</span>(<span>$path</span>);<span>//</span><span>文件大小

        //返回的文件(流形式)</span>
        <span>header</span>("Content-type: application/octet-stream"<span>);
        </span><span>//</span><span>按照字节大小返回</span>
        <span>header</span>("Accept-Ranges: bytes"<span>);
        </span><span>//</span><span>返回文件大小</span>
        <span>header</span>("Accept-Length: <span>$filesize</span>"<span>);
        </span><span>//</span><span>这里客户端的弹出对话框,对应的文件名</span>
        <span>header</span>("Content-Disposition: attachment; filename=".<span>$filename</span><span>);
        </span><span>//</span><span>================重点====================</span>
        <span>ob_clean</span><span>();
        </span><span>flush</span><span>();
        </span><span>//</span><span>=================重点===================
        //设置分流</span>
        <span>$buffer</span>=1024<span>;
        </span><span>//</span><span>来个文件字节计数器</span>
        <span>$count</span>=0<span>;
        </span><span>while</span>(!<span>feof</span>(<span>$fp</span>)&&(<span>$filesize</span>-<span>$count</span>>0<span>)){
            </span><span>$data</span>=<span>fread</span>(<span>$fp</span>,<span>$buffer</span><span>);
            </span><span>$count</span>+=<span>$data</span>;<span>//</span><span>计数</span>
            <span>echo</span> <span>$data</span>;<span>//</span><span>传数据给浏览器端</span>
<span>        }

        </span><span>fclose</span>(<span>$fp</span><span>);

    }


    download(</span>"CGEX脚本清单.doc"<span>);



</span>?>
登录后复制

 

 

立即学习PHP免费学习笔记(深入)”;

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/858176.htmlTechArticlePHP使用文件流下载文件方法(附:解决下载文件内容乱码问题), 记得高中时候做过游戏私服,那时候的游戏主页是用PHP写的,因为文件很...
相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号