Symfoware

Symfowareについての考察blog

PHPでzipファイルを作成する(ZipArchive)

PHPでzipファイルの作り方を調べたのでメモしておきます。


簡単なサンプル



sample.phpというファイルを作成しました。
同じ階層にあるdataフォルダの画像をzipファイルにまとめます。


  1. <?php
  2. $zip = new ZipArchive();
  3. // ZIPファイルを開く
  4. $res = $zip->open('test.zip', ZipArchive::CREATE);
  5. // zipファイルが作れなかったら終了
  6. if ($res !== true) {
  7.     echo "zipファイル作成失敗\n";
  8.     return;
  9. }
  10. // addFileでzipに追加するファイルを指定
  11. $zip->addFile('data/001.jpg');
  12. $zip->addFile('data/002.jpg');
  13. $zip->addFile('data/003.jpg');
  14. // ZIPファイルをクローズ
  15. $zip->close();




phpコマンドでプログラムを実行。


# php sample.php




あっけないぐらい簡単にzipファイルが作成できました。
中身を見てみると、dataフォルダの中にjpgが入っています。

551_01.png





zipファイル中のパスを指定



001.jpgは最上位の階層。
002.jpg、003.jpgはそれぞれ002、003というフォルダの下に配置してみます。

単に第二引数でzipファイル中のパスを指定すればOKです。


  1. <?php
  2. $zip = new ZipArchive();
  3. // ZIPファイルを開く
  4. $res = $zip->open('test.zip', ZipArchive::CREATE);
  5. // zipファイルが作れなかったら終了
  6. if ($res !== true) {
  7.     echo "zipファイル作成失敗\n";
  8.     return;
  9. }
  10. // addFileでzipに追加するファイルを指定
  11. $zip->addFile('data/001.jpg', '001.jpg');
  12. $zip->addFile('data/002.jpg', '002/002.jpg');
  13. $zip->addFile('data/003.jpg', '003/003.jpg');
  14. // ZIPファイルをクローズ
  15. $zip->close();




できました。

551_02.png




addFromString



addFromStringで文字列を直接zipファイルに追加できるようです。
ファイルにも応用できるか試してみました。


  1. <?php
  2. $zip = new ZipArchive();
  3. // ZIPファイルを開く
  4. $res = $zip->open('test.zip', ZipArchive::CREATE);
  5. // zipファイルが作れなかったら終了
  6. if ($res !== true) {
  7.     echo "zipファイル作成失敗\n";
  8.     return;
  9. }
  10. // addFromStringでzipに追加するファイルを指定
  11. $zip->addFromString('001.jpg', file_get_contents('data/001.jpg'));
  12. $zip->addFromString('002.jpg', file_get_contents('data/002.jpg'));
  13. $zip->addFromString('003.jpg', file_get_contents('data/003.jpg'));
  14. // ZIPファイルをクローズ
  15. $zip->close();




ちゃんと狙い通りのzipファイルが作成できました。

551_03.png

関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/02/18(水) 23:38:51|
  2. PHP
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<JenkinsとGitBucketを連携し、pushされたら自動的にソースを取得する(GitBucket Plugin) | ホーム | CodeIgniter 3 データベースの検索結果取得について(Database Reference - Generating Query Results)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1631-86c0db52
この記事にトラックバックする(FC2ブログユーザー)