Maison  >  Article  >  développement back-end  >  Quelques lignes de code pour implémenter facilement le packaging de fichiers PHP et télécharger les détails de l'exemple de code postal

Quelques lignes de code pour implémenter facilement le packaging de fichiers PHP et télécharger les détails de l'exemple de code postal

黄舟
黄舟original
2017-03-04 14:11:181379parcourir

Cet article présente principalement en détail comment utiliser la propre fonction zlib de PHP pour empaqueter et télécharger facilement des fichiers PHP en zip. Il a une certaine valeur de référence. Les amis intéressés peuvent se référer aux exemples de cet article

I. J'ai partagé le code spécifique pour l'empaquetage des fichiers PHP et téléchargé le zip pour votre référence. Le contenu spécifique est le suivant



<?php
//获取文件列表
function list_dir($dir){
   $result = array();
   if (is_dir($dir)){
   $file_dir = scandir($dir);
   foreach($file_dir as $file){
    if ($file == &#39;.&#39; || $file == &#39;..&#39;){
    continue;
    }
    elseif (is_dir($dir.$file)){
    $result = array_merge($result, list_dir($dir.$file.&#39;/&#39;));
    }
    else{
    array_push($result, $dir.$file);
    }
   }
   }
   return $result;
  }

//获取列表 
$datalist=list_dir(&#39;../&#39;);
$filename = "./bak.zip"; //最终生成的文件名(含路径)  
if(!file_exists($filename)){  
//重新生成文件  
  $zip = new ZipArchive();//使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释  
  if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {  
    exit(&#39;无法打开文件,或者文件创建失败&#39;);
  }  
  foreach( $datalist as $val){  
    if(file_exists($val)){  
      $zip->addFile( $val, basename($val));//第二个参数是放在压缩包中的文件名称,如果文件可能会有重复,就需要注意一下  
    }  
  }  
  $zip->close();//关闭  
}  
if(!file_exists($filename)){  
  exit("无法找到文件"); //即使创建,仍有可能失败。。。。  
}  
header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header(&#39;Content-disposition: attachment; filename=&#39;.basename($filename)); //文件名  
header("Content-Type: application/zip"); //zip格式的  
header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件  
header(&#39;Content-Length: &#39;. filesize($filename)); //告诉浏览器,文件大小  
@readfile($filename);
?>

<.>

PHP ZipArchive est une classe d'extension fournie avec PHP. Elle peut facilement compresser et décompresser les fichiers ZIP Avant de l'utiliser, vous devez d'abord vous assurer que l'extension PHP ZIP a été activée. La méthode ne sera pas mentionnée ici. Elle peut être activée sur différentes plateformes. Les méthodes d'amplification PHP sont disponibles en ligne. Si vous avez des questions, n'hésitez pas à les partager.

Voici quelques exemples courants d'utilisation de php zipArchive pour compresser et décompresser des fichiers à titre de référence.

1. Décompressez le fichier zip


$zip=new ZipArchive;//新建一个ZipArchive的对象
 if($zip->open(&#39;test.zip&#39;)===TRUE){
 $zip->extractTo(&#39;images&#39;);//假设解压缩到在当前路径下images文件夹内
 $zip->close();//关闭处理的zip文件
}

2. Compressez le fichier dans un fichier zip

$zip=new ZipArchive;
if($zip->open(&#39;test.zip&#39;,ZipArchive::OVERWRITE)===TRUE){
 $zip->addFile(&#39;image.txt&#39;);//假设加入的文件名是image.txt,在当前路径下
 $zip->close();
}


3. Fichier ajouter le contenu ajouté au fichier zip


$zip=new ZipArchive;
$res=$zip->open(&#39;test.zip&#39;,ZipArchive::CREATE);
if($res===TRUE){
 $zip->addFromString(&#39;test.txt&#39;,&#39;file content goes here&#39;);
 $zip->close();
 echo &#39;ok&#39;;
}else{
 echo &#39;failed&#39;;
}


4. Emballez le dossier dans un fichier zip


function addFileToZip($path,$zip){
 $handler=opendir($path); //打开当前文件夹由$path指定。
 while(($filename=readdir($handler))!==false){
 if($filename != "." && $filename != ".."){//文件夹文件名字为&#39;.&#39;和‘..&#39;,不要对他们进行操作
  if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归
  addFileToZip($path."/".$filename, $zip);
  }else{ //将文件加入zip对象
  $zip->addFile($path."/".$filename);
  }
 }
 }
 @closedir($path);
}
$zip=new ZipArchive();
if($zip->open(&#39;images.zip&#39;, ZipArchive::OVERWRITE)=== TRUE){
 addFileToZip(&#39;images/&#39;, $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
 $zip->close(); //关闭处理的zip文件
}
Ce qui précède est facilement réalisé avec quelques lignes de code package de fichiers PHP télécharger des détails d'exemple de code postal, veuillez faire attention au site Web PHP chinois (www.php.cn) pour plus de contenu connexe !



Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn