设为首页收藏本站language 语言切换
查看: 1755|回复: 0
收起左侧

用PHP实现分段下载

[复制链接]
发表于 2010-2-24 13:39:45 | 显示全部楼层 |阅读模式
如果只是普通的文件下载,完全没有必要用到php,用个就可以,但是有的时候为让文件保密,只能给一部分人下载,显然不能够把链节告诉别人,如果是这样哪就起不到保密的效果。下面这个函数就是一个用php写的文件下载的函数,它是把文件一段一段地读出来,再传送给客户端.<BR>function download($file_dir,$file_name)<BR>//参数说明:<BR>//file_dir:文件所在目录<BR>//file_name:文件名<BR>{<BR>    $file_dir = chop($file_dir);//去掉路径中多余的空格<BR>    //得出要下载的文件的路径<BR>    if($file_dir != '')<BR>    {<BR>        $file_path = $file_dir;<BR>        if(substr($file_dir,strlen($file_dir)-1,strlen($file_dir)) != '/')<BR>            $file_path .= '/';<BR>        $file_path .= $file_name;<BR>    }            <BR>    else<BR>        $file_path = $file_name;    <BR>    <BR>    //判断要下载的文件是否存在<BR>    if(!file_exists($file_path))<BR>    {<BR>        echo '对不起,你要下载的文件不存在。';<BR>        return false;<BR>    }<BR><BR>    $file_size = filesize($file_path);<BR><BR>    header("Content-type: application/octet-stream");<BR>    header("Accept-Ranges: bytes");<BR>    header("Accept-Length: $file_size");<BR>    header("Content-Disposition: attachment; filename=".$file_name);<BR>    <BR>    $fp = fopen($file_path,"r");<BR>    $buffer_size = 1024;<BR>    $cur_pos = 0;<BR>    <BR>    while(!feof($fp)&amp;&amp;$file_size-$cur_pos&gt;$buffer_size)<BR>    {<BR>        $buffer = fread($fp,$buffer_size);<BR>        echo $buffer;<BR>        $cur_pos += $buffer_size;<BR>    }<BR>    <BR>    $buffer = fread($fp,$file_size-$cur_pos);<BR>    echo $buffer;<BR>    fclose($fp);<BR>    return true;<BR><BR>}<BR><DIV></FONT></DIV>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-6 20:52 , Processed in 0.076855 second(s), 22 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表