php生成zip文件类实例

前端技术 2023/09/06 PHP

本文实例讲述了php生成zip文件类。分享给大家供大家参考。具体如下:

<?php
 /*
  By:   Matt Ford
  Purpose: Basic class to create zipfiles
 */
class zipFile {
 public $files = array();
 public $settings = NULL;
 public $fileInfo = array (
   \"name\" => \"\",
   \"numFiles\" => 0,
   \"fullFilePath\" => \"\"
  );
 private $fileHash = \"\";
 private $zip = \"\";
 public function __construct($settings) {
  $this->zipFile($settings);
 }
 public function zipFile($settings) {
  $this->zip = new ZipArchive();
  $this->settings = new stdClass();
  foreach ($settings as $k => $v) {
   $this->settings->$k = $v;
  }
 }
 public function create() {
  $this->fileHash = md5(implode(\",\", $this->files));
  $this->fileInfo[\"name\"] = $this->fileHash . \".zip\";
  $this->fileInfo[\"numFiles\"] = count($this->files);
  $this->fileInfo[\"fullFilePath\"] = $this->settings->path . 
  \"/\" . $this->fileInfo[\"name\"];
  if (file_exists($this->fileInfo[\"fullFilePath\"])) {
   return array (
     false,
     \"already created: \" . $this->fileInfo[\"fullFilePath\"]
     );
  }
  else {
   $this->zip->open($this->fileInfo[\"fullFilePath\"], ZIPARCHIVE::CREATE);
   $this->addFiles();
   $this->zip->close();
   return array (
     true,
     \"new file created: \" . $this->fileInfo[\"fullFilePath\"]
     );
  }
 }
 private function addFiles() {
  foreach ($this->files as $k) {
   $this->zip->addFile($k, basename($k));
  }
 }
}
$settings = array (
  \"path\" => dirname(__FILE__)
 );
$zipFile = new zipFile($settings);
$zipFile->files = array (
  \"./images/navoff.jpg\",
  \"./images/navon.jpg\"
 );
list($success, $error) = $zipFile->create();
if ($success === true) {
 //success
}
else {
 //error because: $error
}
?>

希望本文所述对大家的php程序设计有所帮助。

本文地址:https://www.stayed.cn/item/15973

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。