如何使用php解压缩zip文件中的子目录和文件

时间:2015-06-10 07:52:33

标签: php zip unzip

我正在尝试从zip文件中解压缩所有子目录和文件。

文件夹结构

  • 一个文件夹
    • B1文件夹(在b1文件夹中)C1文件夹 - C2文件
    • B2档案
  • A1档案

在我尝试的代码下面

尝试1

functio unZip($source, $destiny) {
    $zip = zip_open($source);
    if ($zip) {
        while ($zip_entry = zip_read($zip)) {
            $fp = fopen("zip/" . zip_entry_name($zip_entry), 'w');
            if (zip_entry_open($zip, $zip_entry, 'r')) {
                $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
                fwrite($fp, "$buf");
                zip_entry_close($zip_entry);
                fclose($fp);
            }
        }
        zip_close($zip);
    }
}

尝试2

function unZip($source, $destiny) {
    $zips = new ZipArchive;
    if($zips->open($source) == TRUE){
        $zips->extractTo($destiny);
        $zips->close();
        echo 'ok';
    } else {
        echo 'fail';
    }
}

尝试3

function unZip($path_file, $destiny) {
    if (!file_exists($destiny)) {
        mkdir($destiny);
    }
    $zips = zip_open($path_file);
    if ($zips) {
        while ($zips_entry = zip_read($zips)) {
            $zips_entry_name = str_replace('\\', '/', zip_entry_name($zips_entry));
            $file_open = fopen($destiny, 'w');
            if (zip_entry_open($zips, $zips_entry, 'w')) {
                $buf = zip_entry_read($zips_entry, zip_entry_filesize($zips_entry));
                fwrite($file_open, $buf);
                zip_entry_close($zips_entry);
                fclose($file_open);
            }
        }
        zip_close($zips);
    }
}

错误

Warning: fopen(). failed to open stream: Invalid argument 

0 个答案:

没有答案