1、flush — 刷新输出缓冲

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

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

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

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

代码如下

// 文件名不要用中文
//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");

最新文章

  1. javaScript 查询字符串参数 获取
  2. Hover.css:一组超实用的 CSS3 悬停效果和动画
  3. 两个数据库表同步的可视化WEB同步程序
  4. 支付宝支付错误 系统忙:错误代码AE150002999
  5. Java历程-初学篇 Day09 冒泡排序
  6. 如何获取离线安装Chrome扩展程序的包
  7. [apache2.4]configure: error: APR not found. Please read the documentation.
  8. Mysql基本命令及数据库存储位置
  9. 关于flex布局【转】
  10. CentOS6.8合并DVD1和DVD2作为本地yum源
  11. centos 6.9安装python 3.6
  12. 在window下搭建Vue.Js开发环境
  13. 关于netcore 发布到服务器的准备
  14. AJAX之发送GET请求
  15. jQuery之禁止Get请求缓存
  16. WPF后台线程更新UI
  17. android 学习过程中登陆失效的个人理解
  18. redis几种数据类型以及使用场景
  19. OpenJudge——0003:jubeeeeeat
  20. DataTrigger

热门文章

  1. 自学Python2.7-collections系列
  2. C#应用程序隐藏调用bat脚本
  3. 【java】计算一段代码执行时长java.lang.System类里的public static long currentTimeMillis()方法
  4. TCP/IP的那些事--子网掩码
  5. loadrunner录制、加载以及分析过程
  6. cell上添加倒计时,以及时差问题的解决
  7. Slf4j与其他日志系统兼容的使用
  8. Sublime Text 2 Plugin Installation
  9. Error in library(DESeq2) : 不存在叫‘DESeq2’这个名字的程辑包
  10. Xamarin 简单的网络请求