端くれプログラマの備忘録 PHP [PHP] ZIPファイルの作成と解凍

[PHP] ZIPファイルの作成と解凍

サーバー上の特定ディレクトリに格納されている全画像を単一ZIPファイルにアーカイブしてダウンロードできるようにしたいという要件あり。PHPでZIPアーカイブを処理する方法を調べたら、ZipArchiveという便利なクラスがあったので試してみる。

圧縮

$zip = new ZipArchive();
$result = $zip->open('images.zip', ZipArchive::CREATE);
if ($result === true) {
    $zip->addFile('images/IMG_4086.JPG');
    $zip->addFile('images/IMG_4087.JPG');
    $zip->addFile('images/IMG_4088.JPG');
    $zip->addFile('images/IMG_4089.JPG');
    $zip->addFile('images/IMG_4090.JPG');
    $zip->close();
} else {
    echo 'error ' . $result;
}

解凍

$zip = new ZipArchive();
$result = $zip->open('./images.zip');
if ($result === true) {
    $zip->extractTo('./temp'); //存在しないと作成される
    $zip->close();
} else {
    echo 'error ' . $result;
}

参考サイト

PHP: ZipArchive – Manual
http://www.php.net/manual/ja/class.ziparchive.php

[PHP] ZipArchiveクラスを使ったファイルのZip圧縮と展開(解凍) | PHP Archive
http://php-archive.net/php/zip-archive/

[PHP]ディレクトリー(フォルダ)の階層構造を維持したまま圧縮する | PHP Archive
http://php-archive.net/php/zip-directory/