1. 程式人生 > >PHP 解壓 ZIP 中的檔案到指定目錄 (不含 ZIP 中的資料夾路徑)

PHP 解壓 ZIP 中的檔案到指定目錄 (不含 ZIP 中的資料夾路徑)

<?php
    header('Content-type:text/html;charset=utf-8');
    $filename = './xiyanhetong20181213.zip'; // 目標原始檔
    $dir = 'test_zip'; // 存放目錄
    if(!is_dir($dir)) {
        mkdir($dir, 0777, true);//建立目錄儲存解壓內容
    }
    if(file_exists($filename)) {
        $resource = zip_open($filename);
        while($zip = zip_read($resource)) {
            if(zip_entry_open($resource, $zip)) {
                $file_content = zip_entry_name($zip);//獲得檔名,mac壓縮成zip,解壓需要過濾資源庫隱藏檔案
                $file_name = substr($file_content, strrpos($file_content, '/') +1);
                if(!is_dir($file_name) && $file_name) {
                    $save_path = $dir .'/'. $file_name;
                    if(file_exists($save_path)) {
                        echo '資料夾內已存在檔案 "' . $file_name . '" <pre />';
                    }else {
                        echo $file_name . '<pre />';
                        $file_size = zip_entry_filesize($zip);
                        $file = zip_entry_read($zip, $file_size);
                        file_put_contents($save_path, $file);
                        zip_entry_close($zip);
                    }
                }
            }
        }
        zip_close($resource);
    }