如何下载文件

c
<?php

  require"a.php";
  header("Content-type:text/html;charset=utf-8");
  //接收要下载的文件名字
  $file_name=$_REQUIRE[''];
  //调用
  down_fille($file_name,"/xxx/xxx/");



?>




b
<?php
 header("Content-type:text/html;charset=utf-8");
  <a href='b.php?filename=sun.jpg'>点击下载</a><img src='sun.jpg'/><br/>

?>


a
<?php

    //对函数的说明
    //1.参数说明$file_name  文件名
       //     $file_sub_dir:下载文件子路径     '"/xxx/xxx/"'
    function down_file($file_name,$file_sub_patth){
    //死去活来,演示下载一个图片
    //如果文件是中文的

    //$file_name="san.jpg";
    //原因PHP文件函数比较老,需要中文转码   gb2312
    $flie_name=iconv("utf-8","gb2312",$file_name);

    //路径
    //$file_path="./文件名/".$file_name;
    //如果你希望使用绝对路径
    //$file_path=$_SERVER['DOCUMENT_ROOT']."./文件名/".$file_name;

    
    //1打开文件
    if(!file_exists($file_name)){
    echo "文件不存在!";
    return;
    
}
    $fp=foper($file_name,"r");
    //获取下载文件的大小
    $file_size=filiesize($file_nsme);
  //超过多少就不能下载了
  if($file_soze>10*102481024){
  echo "<script language='javascript'>window,alert('文件过大')</script>";
  return;
}


    //返回的文件
    header("cache-control:application/octet-stream");
    //按照字节大小返回
    header("Accept-Ranges:bytes");
    //返回文件大小
    header("Accept-Leagth:$file_size");
    //这里客户端弹出对话框,对应的文件名
    header("Content-Didposition:attachment;filename=".$file_name);

    //向客户端回送数据
    $buffer="1024";
    //为了下载安全,我们最好做一个文件字节读取计数器
    $file_count=0;
    //这句话判断文件是否结束
    while(!feof($fp)&& ($file_size-$file_count>0)){
    $file_date=fread($fp,$buffer);
    //统计多少个字节
    $file_count+=$buffer;
    //把部分数据回送给浏览器
    echo $file_deta;

}
    //关闭文件
    fclose($fp);


}

    //测试函数
    down_file(名字,"/xxx/xxx/");

?>

 

posted @ 2016-11-01 19:29  虚镜  阅读(220)  评论(0编辑  收藏  举报