继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

php文件下载的原理

米琪卡哇伊
关注TA
已关注
手记 216
粉丝 4
获赞 28

<?php

      //对函数的说明

      //参数说明 $file_name 文件名

      //$file_sub_dir: 下载文件的子路径 '"/xxx/xxx/"

      function down_file($file_name,$file_sub_dir){

             //死去活来,演示下载一个图片.

             //如果文件是中文.



             //原因 php文件函数,比较古老,需要对中文转码 gb2312

             $file_name=iconv("utf-8","gb2312",$file_name);

             //绝对路径

             $file_path=$_SERVER['DOCUMENT_ROOT'].$file_sub_dir.$file_name;

             //如果你希望绝对路径


             //1.打开文件

             if(!file_exists($file_path)){

                    echo "文件不存在!";

                    return ;

             }

             $fp=fopen($file_path,"r");


             //获取下载文件的大小

             $file_size=filesize($file_path);

             if($file_size>30){


                    echo "<script language='javascript'>window.alert('过大')</script>";

                    return ;

             }

             //返回的文件

             header("Content-type: application/octet-stream");

             //按照字节大小返回

             header("Accept-Ranges: bytes");

             //返回文件大小

             header("Accept-Length: $file_size");

             //这里客户端的弹出对话框,对应的文件名

             header("Content-Disposition: attachment; filename=".$file_name);

             //向客户端回送数据


             $buffer=1024;

             //为了下载的安全,我们最好做一个文件字节读取计数器

             $file_count=0;

             //这句话用于判断文件是否结束

             while(!feof($fp) && ($file_size-$file_count>0) ){

                    $file_data=fread($fp,$buffer);

                    //统计读了多少个字节

                    $file_count+=$buffer;

                    //把部分数据回送给浏览器;

                    echo $file_data;

             }

             //关闭文件

             fclose($fp);

      }

      //测试函数是否可用

      down_file("吕虎林.jpg","/http/down/");

?>



打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP