温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

php文件下载的原理

发布时间:2020-06-24 12:56:20 来源:网络 阅读:371 作者:吕虎林_lhl 栏目:web开发

<?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: p_w_upload; 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/");

?>



向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI