(3)
(0)
(1)
(0)
Total: 4 CakePHP zip圧縮コンポーネント
CodeIgniterの標準ライブラリにはZip圧縮クラスがあり、簡単に以下のような機能を実装することができます。
・Zipアーカイブを作成し、サーバーに保存やダウンロードを行う
・サーバーのファイルやディレクトリをZipに追加
・動的にテキストデータをZipに追加
このクラスをCakePHPのコンポーネントクラスとして利用できるように少々改良しました。
ソースコード
/app/controllers/components/zip.php
利用方法
ZipCompornent(zip.php)を
/app/controllers/components
に配置。
コントローラー側で利用宣言を行います。
PHP:
あとは、上記CodeIgniterのマニュアルと同様に利用できます。
($this->zip ではなく $this->Zip となります)
使用例
サーバ上のフォルダにZipを保存し、ダウンロードさせる例。
PHP:
-
$name = 'mydata1.txt';
-
$data = 'A Data String!';
-
-
$this->Zip->add_data($name, $data);
-
-
// Zipファイルをサーバのフォルダに書き込みます。"my_backup.zip" という名前にします。
-
$this->Zip->archive('/path/to/directory/my_backup.zip');
-
-
// "my_backup.zip"という名前で、デスクトップにファイルをダウンロードします。
-
$this->Zip->download('my_backup.zip');
サーバ上にあるファイルを圧縮する
PHP:
-
$path1 = '/path/to/photo1.jpg';
-
$path2 = '/path/to/photo2.jpg';
-
$this->Zip->read_file($path1);
-
$this->Zip->read_file($path2);
-
// "my_backup.zip"という名前でダウンロードさせます。
-
$this->Zip->download('my_backup.zip');
ファイル圧縮時に含まれるディレクトリ構造を維持したい場合は、第2引数に TRUE を指定します。
PHP:
-
$path = '/path/to/photo.jpg';
-
$this->Zip->read_file($path, TRUE);
サーバ上のディレクトリとサブディレクトリを再帰的に圧縮する
PHP:
-
$path = '/path/to/your/directory/';
-
$this->Zip->read_dir($path);
関連するその他の記事
Comments
Leave a Reply