<?php
set_time_limit(0);
$zip_file
=
'demo.rar'
;
$fp
=
fopen
(
$zip_file
,
'r'
);
//只读方式打开
$filesize
=
filesize
(
$zip_file
);
//文件大小
/***********************header头不要设置错了哦****************************/
//返回的文件(流形式)
header(
'Content-Description: File Transfer'
);
header(
'Content-Type: application/octet-stream'
);
header(
'Content-Transfer-Encoding: binary'
);
header(
'Accept-Ranges: bytes'
);
header(
'Expires: 0'
);
header(
'Cache-Control: must-revalidate'
);
header(
'Pragma: public'
);
header(
"Content-Length: $filesize"
);
//这里客户端的弹出对话框,对应的文件名
header(
"Content-Disposition: attachment; filename="
.
basename
(
$zip_file
));
/*************************************************************************/
/******************************重点要考************************************/
//清空缓冲区
ob_clean();
//刷新缓冲区
flush
();
//设置分流 分流是为了不让整个下载文件占用大量的php脚本内存,如果不分流,你的文件又3G 你的php脚本内存就要大于3G
while
(!
feof
(
$fp
)){
$chunk_size
= 10 * 1024;
// 2MB
echo
fread
(
$fp
,
$chunk_size
);
ob_flush();
// 刷新PHP缓冲区到Web服务器
flush
();
// 刷新Web服务器缓冲区到浏览器
sleep(1);
// 每1秒下载一次
}
fclose(
$fp
);
exit
();
?>