• PHP打包zip并下载


    $file_template = FCPATH.'canddata/cand_picture.zip';//在此之前你的项目目录中必须新建一个空的zip包(必须存在)

    $downname = $card.'.zip';//你即将打包的zip文件名称

    $file_name = FCPATH.'canddata/'.$card.'.zip';//把你打包后zip所存放的目录

    $result = copy( $file_template, $file_name );//把原来项目目录存在的zip复制一份新的到另外一个目录并重命名(可以在原来的目录)

    $zip = new ZipArchive();//新建一个对象

    if ($zip->open($file_name, ZipArchive::CREATE) === TRUE) { //打开你复制过后空的zip包

      $zip->addEmptyDir($card);//在zip压缩包中建一个空文件夹,成功时返回 TRUE, 或者在失败时返回 FALSE

      //下面是我的场景业务处理,可根据自己的场景需要去处理(我的是将所有的图片打包)

      $i = 1;

      foreach ($cand_photo as $key3 => $value3) {

        $file_ext = explode('.',$value3['cand_face']);//获取到图片的后缀名

        $zip->addFromString($card.'/'.$card.'_'.$i.'.'.$file_ext[3] , file_get_contents($value3['cand_face']));//(图片的重命名,获取到图片的二进制流)

        $i++;

      }

      $zip->close();

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

      $file_size=filesize($file_name);//获取文件的字节

      //下载文件需要用到的头  

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

      Header("Accept-Ranges: bytes");  

      Header("Accept-Length:".$file_size);

      Header("Content-Disposition: attachment; filename=$downname");  

      $buffer=1024;  //设置一次读取的字节数,每读取一次,就输出数据(即返回给浏览器) 

      $file_count=0; //读取的总字节数 

      //向浏览器返回数据  如果下载完成就停止输出,如果未下载完成就一直在输出。根据文件的字节大小判断是否下载完成

      while(!feof($fp) && $file_count<$file_size){   
                    $file_con=fread($fp,$buffer);   
                    $file_count+=$buffer;   
                    echo $file_con;   
            }  

      fclose($fp); 

      //下载完成后删除压缩包,临时文件夹 

      if($file_count >= $file_size) {  

        unlink($file_name); 

      }

    }

  • 相关阅读:
    进度条
    html5 表单新增事件
    html5 表单的新增type属性
    html5 表单的新增元素
    html5 语义化标签
    jq 手风琴案例
    codeforces 702D D. Road to Post Office(数学)
    codeforces 702C C. Cellular Network(水题)
    codeforces 702B B. Powers of Two(水题)
    codeforces 702A A. Maximum Increase(水题)
  • 原文地址:https://www.cnblogs.com/wanghaodong/p/9172864.html
Copyright © 2020-2023  润新知