PHP实现文件下载

<?php    
    
    /**
    **file_dir:文件所在的目录
    **file_name:文件名
    */
    function filedownload($file_dir,$file_name)
    {
        //让$file_name支持中文


        //去掉路径右边中多余的空格
        $file_dir=chop($file_dir);

        $file_dir=$_SERVER['DOCUMENT_ROOT'].$file_dir;

        //如果路径最右边没有/,添加/
        if(substr($file_dir,strlen($file_dir)-1,strlen($file_dir))!='/')
        {
            $file_dir .='/';
            $file_path =$file_dir.$file_name;
        }
        else
            $file_path =$file_dir.$file_name;

        //判断下载文件是否存在
        if(!file_exists($file_path))
        {
            echo '对不起,您要下载的文件不存在。';
            return;
        }

        $file_size=filesize($file_path);

        //这里可以根据文件的大小判断用户是否有权限进行下载

        //设置响应头
        header("content-type: application/octet-stream");
        header("accept-ranges: bytes");
        header("accept-length: $file_size");
        header("content-disposition: attachment; filename=".$file_name);

        $fp=fopen($file_path,'r');
        //设置读取文件大小
        $buffer_size=1024;
        //记录读取文件大小
        $file_pos=0;
        
        while(!feof($fp) && $file_size-$file_pos>$buffer_size)
        {
            $buffer=fread($fp,$buffer_size);
            $file_pos +=$buffer_size;
            echo $buffer;
        }
        $buffer=fread($fp,$file_size-$file_pos);
        echo $buffer;
        echo $buffer;
        return true;
    }

    filedownload('/test','HTTP详解.docx');
?>

posted on 2012-05-15 10:56  milaoshu  阅读(170)  评论(0)    收藏  举报