yii文件下载

 //文件下载
        header("Content-Type:text/html;charset=utf-8");//文件的类型
        $file='简历.doc';//要下载的文件
//        $file='11.txt';
        $file=iconv('utf-8','gb2312',$file);//文件名中文转换
       $str="<meta charset='utf-8'><table border='1'><tr><td>你会</td><td>慢慢来</td></tr></table>";//之下载内容
//        if(!is_file($file)){
            //判断文件是否存在
//            echo "没有文件";die;
//        }
        header('Content-Type: application/octet-stream');//告诉浏览器文件形式 文件流
//        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告诉浏览器文件形式 文件流
//        header("Accept-Ranges:bytes");//告诉浏览器文件大小是按照字节进行计算的默认写不写都可以
//        header('Accept-Length:'.strlen($str));//只下载内容
        header('Accept-Length:'.filesize($file));//告诉浏览器文件大小默认字节为单位显示下载的大小
        header('Content-Disposition: attachment;filename='.$file);//描述文件。文件当作附件下载和文件名【$file下载后的文件名】
//        header('Cache-Control: max-age=0');【把文件当作附件下载】
//        echo $str;die;
        //readfile是一种下载方式
//        readfile($file);die;//通过readfilr读取文件输出到浏览器上


//分次读取文件来下载,如果文件比较大,不适合一次行读取下载[文件大,相应时间太长,服务器压力大]
        $fp=fopen($file,'r');//打开文件
        $file_count=0;//已读取的文件内容的大小.使读取文件内容大小更加准确
        $buffer=1024;//每次读取的长度
        //feof读取文件时的指针是否是指向最后。检测是否已达到文件末尾。是true,[包括socket超时]否false
        while(!feof($fp)&&$file_count<filesize($file)){
            $file_info=fread($fp,$buffer);//读取文件
            $file_count+=$buffer;//文件长度
            echo $file_info;//每次读取1024大小就告诉浏览器
        }
        fclose($fp);die;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值