影子互联

专注深圳网站建设

php的fread下载大文件

时间:2017-11-18 18:22:43,点击:0

    因为单位一个资料共享系统要传输大文件,原来的程序在下载100M以下的文件时正常,但是最近需要下载几百M的文件,然而下载后大小变成几K,照成根本无法使用,在网上找了半天(只多不少),一直没有找到解决办法,在快要放弃的时候,终于找到一个非常好的方法,下载的效率很高。在此分享,希望能给需要的人一点帮助。

提供代码如下(此代码已经经过实际验证):
 
<html>
<head><title>文件下载</title></head>
<body>
<?php
require('f_download.php');
$file_naked=$_GET['file_name'];
$file="upload_files/".$file_naked;

if (file_exists($file)) {
 $filesize=filesize($file)+1000;
 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=".$file_naked);
//以下内容是引用网友的代码,由于原来的出处找不到了,在此表示万分感谢和抱歉。
//打开文件 
$fp = fopen($file, "rb"); 
//设置指针位置 
fseek($fp,0); 
//虚幻输出 
while (!feof($fp)) { 
    //设置文件最长执行时间 
    set_time_limit(0); 
    print (fread($fp, 1024 * 8)); //输出文件 
    flush(); //输出缓冲 
    ob_flush(); 
} 
fclose($fp); 
exit ();
}else{echo "err";die();}
?>
</body>
</html>