zoukankan      html  css  js  c++  java
  • PHP -- 文件下载

    1、 简单的文件下载:

     1 <?php
     2 
     3   
     4   function file_dowload()
     5   {
     6     $file_name="滑稽.jpg";
     7     $file_name=iconv("utf-8","gb2312",$file_name);
     8     
     9     if(!file_exists($file_name))
    10     { 
    11         echo "文件不存在";
    12         return ;
    13     }
    14     $fp=fopen($file_name,"r");
    15     $file_size=filesize($file_name);//文件大小
    16     
    17     # header 部分开始 (写错的话会下载源代码文件)
    18     
    19     #返回的文件
    20     header("Content-type: application/octet-stream");
    21     //按文件大小返回
    22     header("Accept-Ranges:bytes");
    23     #返回文件大小
    24     header("Accept-Length:$file_size");
    25     //客户端对话框的文件名
    26     header("Content-Disposition:attachment; filename=".$file_name);
    27     
    28     # header 部分结束
    29   
    30   
    31     //向客户端回送数据
    32     $buffer=1024;
    33     $file_count=0;
    34     //判断文件是否结束
    35     while(!feof($fp)&& ($file_size-$file_count>0))
    36     {
    37         //依次读取每次1024字节的数据
    38         $file_data=fread($fp,$buffer);
    39         //统计读了多少个字节
    40         $file_count+=$buffer;
    41         //把部分数据传回给浏览器
    42         echo $file_data;
    43     }
    44     //关闭文件
    45     fclose($fp);    
    46   }
    47   file_dowload();
    48   
    49    //调试需要
    50     //echo "<script language='javascript'>window.alert('".$file_size."')</script>";
    51     //return;
    52 ?>

     改进后:

     1 <?php
     2 
     3   
     4   function file_dowload($file_name,$file_sub_dir)
     5   {
     6       
     7       # ************************* 基本数据判断部分开始
     8       
     9     $file_name=iconv("utf-8","gb2312",$file_name);
    10     $file_path=$_SERVER['DOCUMENT_ROOT'].$file_sub_dir.$file_name; //$_SERVER['DOCUMENT_ROOT']获得绝对路径
    11     
    12     if(!file_exists($file_path))
    13     { 
    14         echo "文件不存在";
    15         return ;
    16     }
    17     $fp=fopen($file_path,"r");
    18     $file_size=filesize($file_path);//文件大小
    19     if($file_size>4417){
    20         echo "<script language='javascript'>window.alert('".$file_size."')</script>";
    21         return ;
    22     }
    23     
    24     # ************************* 基本数据判断部分
    25     
    26     
    27     #************************* header 部分开始 (写错的话会下载源代码文件)
    28     
    29     //返回的文件
    30     header("Content-type: application/octet-stream");
    31     //按文件大小返回
    32     header("Accept-Ranges:bytes");
    33     #返回文件大小
    34     header("Accept-Length:$file_size");
    35     //客户端对话框的文件名
    36     header("Content-Disposition:attachment; filename=".$file_name);
    37     
    38     #************************* header 部分结束
    39   
    40   
    41     #************************* 向客户端回送数据开始
    42     
    43     ob_clean();
    44     readfile($file_path);
    45     
    46     //关闭文件
    47     fclose($fp);    
    48     
    49     #************************* 向客户端回送数据结束
    50   }
    51   
    52   #************************* 启动调用
    53   file_dowload("不不不1.JPG","/images/");
    54   
    55    //调试需要
    56     //echo "<script language='javascript'>window.alert('".$file_size."')</script>";
    57     //return;
    58 ?>

  • 相关阅读:
    关于datatable的一些操作以及使用adapter对数据的操作
    P1083 借教室
    P2264 情书
    P1772 [ZJOI2006]物流运输
    P1353 [USACO08JAN]跑步Running
    P2903 [USACO08MAR]麻烦的干草打包机The Loathesome Hay Baler
    P2895 [USACO08FEB]流星雨Meteor Shower
    P2665 [USACO08FEB]连线游戏Game of Lines
    P2896 [USACO08FEB]一起吃饭Eating Together
    P2925 [USACO08DEC]干草出售Hay For Sale
  • 原文地址:https://www.cnblogs.com/daomul/p/3374070.html
Copyright © 2011-2022 走看看