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

    一.PHP下载文件时不能用ajax下载,ajax会下载成二进制文件,可以用get与post方式

    二.代码与注释,粘贴可以用

    /**
    * 下载文件
    * filesize()函数只能读取本地文件大小,路径是绝对路径或者相对路径
    * get_headers()函数能获取远程文件大小,路径是一个URL,获得是一个数组
    * 传url参数(即文件地址),
    * 我用的是远程的方法get_headers()
    */
    public function Dowloads(){
    //接收文件名参数
    $url=$this->request->get('url');
    //统计文件大小
    $lengths=get_headers($url);
    //get_headers获得的是一个数组,获得文件大小,你可以打印$length看下数据结构
    $length=explode(":",$lengths[2]);
    //这是去掉空格后的文件大小
    $file_length=trim($length[1]);

    //这两个是会下面用到的参数$file_length(文件大小),$file_name(下载后文件名称)
    //$file_name你可以随便命名,也可以像下面我这样拼接
    //把文件地址?后面的给去掉
    $res2=explode("?",$url);
    $res3=trim($res2[0]);
    //把文件地址拆分
    $file_names=explode("/",$res3);
    //拼接下载后的文件名称
    $file_name=$file_names[4]."/".$file_names[5]."/".$file_names[6]."/".$file_names[7];

    //打开文件
    $file = fopen ( $url, "rb" );
    //告诉浏览器这是一个文件流格式的文件
    Header ( "Content-type: application/octet-stream" );
    //请求范围的度量单位
    Header ( "Accept-Ranges: bytes" );
    //Content-Length是指定包含于请求或响应中数据的字节长度,注意用我的Content-Length,不要用Accept-Length
    Header ( "Content-Length: " .$file_length);
    //用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。
    Header ( "Content-Disposition: attachment; filename=" . $file_name);

    //读取文件内容并直接输出到浏览器
    $contents = '';
    while (!feof($file)) { //这步一定要加,不然下载有大小限制的
    $contents = fread($file, $file_length);
    echo $contents;//一定要把文件输出到浏览器上
    }
    fclose($file);
    exit ();
    }
  • 相关阅读:
    LeetCode 769. Max Chunks To Make Sorted
    LeetCode 845. Longest Mountain in Array
    LeetCode 1059. All Paths from Source Lead to Destination
    1129. Shortest Path with Alternating Colors
    LeetCode 785. Is Graph Bipartite?
    LeetCode 802. Find Eventual Safe States
    LeetCode 1043. Partition Array for Maximum Sum
    LeetCode 841. Keys and Rooms
    LeetCode 1061. Lexicographically Smallest Equivalent String
    LeetCode 1102. Path With Maximum Minimum Value
  • 原文地址:https://www.cnblogs.com/dyj--php/p/9299376.html
Copyright © 2011-2022 走看看