php文件打壓縮包

壓縮目錄下所有文件

爲了方便以後重用,這裏我寫了三個函數,必須一起放到一個類下邊,讀者也可根據情況分開,但請注意更改方法調用的類名(這裏都用的self)。

Question:這裏我想只把當前路徑下所有文件(包括文件夾)壓縮到壓縮包裏,不想壓縮多餘的文件夾,不知道該怎麼做,有望知情者告知,謝謝!

   /**
     * add path to zip
     * Here, I want to add all the files under the current path, but I don't know how to add it, I want to get help, thank you!
     * @param $path
     * @param $zip
     */
    public static function addDirectoryToZip($path, $zip)
    {
        self::createPath([$path, $zip]);
        $zipObj = new \ZipArchive();
        if ($zipObj->open($zip, \ZipArchive::CREATE) === TRUE) {
            $handler = opendir($path);
            while (($filename = readdir($handler))) {
                if ($filename != "." && $filename != "..") {
                    $tem_path = $path . DIRECTORY_SEPARATOR . $filename;
                    if (is_dir($tem_path)) {
                        self::addDirectoryToZip($tem_path, $zip);
                    } else {
                        $zipObj->addFromString(iconv('gbk', 'utf-8', $tem_path), file_get_contents($tem_path));
                    }
                }
            }
            @closedir($path);
            $zipObj->close();
        }
    }

    /**
     * Create a or more path
     * @param $path
     */
    public static function createPath($path)
    {
        if (is_array($path)) {
            foreach ($path AS $v) {
                if (!is_array($v)) {
                    self::createOnePath($v);
                } else {
                    die('Must be a one-dimensional array!');
                }
            }
        } else {
            self::createOnePath($path);
        }
    }

    /**
     * Create a path
     * @param $path
     */
    public static function createOnePath($path)
    {
        $path = strpos(basename($path), '.') ? dirname($path) : $path;
        if (!is_dir($path)) {//nonexistion path
            mkdir($path, 0777, true) ? '' : die('Creation path failed!');
        }
    }

參考地址:https://blog.csdn.net/koastal/article/details/51944982

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章