一個php 生成zip文件的類

y3c5 9年前發布 | 920 次閱讀 PHP

<?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 } ?></pre>

 本文由用戶 y3c5 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!