サーバー上の特定ディレクトリに格納されている全画像を単一ZIPファイルにアーカイブしてダウンロードできるようにしたいという要件あり。PHPでZIPアーカイブを処理する方法を調べたら、ZipArchiveという便利なクラスがあったので試してみる。
圧縮
1 2 3 4 5 6 7 8 9 10 11 12 |
$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; } |
解凍
1 2 3 4 5 6 7 8 |
$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/