Home  >  Article  >  Backend Development  >  Use PHP to implement zip packaging and download functions

Use PHP to implement zip packaging and download functions

不言
不言Original
2018-06-12 16:27:464390browse

This article mainly introduces the function of packaging zip and downloading in PHP. The code is simple and easy to understand, very good, and has certain reference value. Friends who need it can refer to it

The specific code is as follows:

$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); 
  }
}

The above is the entire content of this article. I hope it will be helpful to everyone’s study. For more related content, please pay attention to the PHP Chinese website!

Related recommendations:

Solution to the problem of garbled Chinese characters in the URL using get obtained by PHP

In the WeChat applet PHP backend form submission

The above is the detailed content of Use PHP to implement zip packaging and download functions. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn