haidong 发表于 2010-2-24 13:39:45

用PHP实现分段下载

如果只是普通的文件下载,完全没有必要用到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>
页: [1]
查看完整版本: 用PHP实现分段下载