PEARを使って、圧縮や解凍をやってみよう
以前に複数ファイルを圧縮してダウンロードする方法(HTTP_DOWNLOAD)を紹介しました。
HTTP_DOWNLOADで複数ファイルを圧縮してダウンロードはできるものの、ファイルの[プロパティ]→[概要]が消える問題がありましたが、今回紹介するFile_Archiveは[概要]が消えずに問題なくダウンロードすることができます。
HTTP_DOWNLOADに関してはその名の通りダウンロード用のプログラムですが、File_Archiveは圧縮・解凍用のプログラムです。
ということで、今回はFIle_Archiveを紹介します。
・PEAR::File_Archiveのダウンロード
PEAR::File_Archive
*依存ファイルが多いのでレンタルサーバーをお使いの方はご注意ください。
インストールについて知りたい方は、過去の記事をご参照ください。
レンタルサーバーでPEARを使う方法
WindowsでPEARを自動インストールしてみよう
まずは、ファイルを圧縮してダウンロードしてみましょう。
適当に圧縮させたいディレクトリを準備してください。(今回は「sample」ディレクトリを圧縮すると仮定します)
早速、作ってみましょう。以下のソースを記述してください。
require_once('File/Archive.php');File_Archive::extract(
File_Archive::read('sample/'),
File_Archive::toArchive('sample.zip', File_Archive::toOutput())
);
これで完成です^^;プログラムをブラウザで確認するとzipに圧縮されたファイルがダウンロードできると思います。
File_Archive::extract(File_Archive::toOutput()以外にはFile_Archive::toFiles()があります。 下記のソースを見てください。
File_Archive::read($dir),
File_Archive::toArchive($fileName, File_Archive::toOutput())
);
$dir:圧縮するディレクトリ名
$fileName:ダウンロードファイル名(tar, gz, bz2, tgz, tbz, zipが可能)
File_Archive::toOutput():圧縮したファイルをダウンロードする
require_once('File/Archive.php');File_Archive::extract(
File_Archive::read('sample/'),
File_Archive::toArchive('sample.zip', File_Archive::toFiles())
);
File_Archive::toOutput()をFile_Archive::toFiles()に変更すると、サーバー内に保存されます。
最後に圧縮したファイルを解凍する方法を紹介します。
sample.zipを「sample」ディレクトリに解凍すると仮定して、以下のようなソースを記述します。
require_once('File/Archive.php');File_Archive::extract(
File_Archive::read('sample.zip/'),
File_Archive::appender('sample')
);
このプログラムを起動させると、解凍されたファイルがsampleディレクトリの中にあると思います。
File_Archive::extract(
File_Archive::read($fileName),
File_Archive::appender($dir)
);
$fileName:解凍する圧縮ファイル名(最後に「/」を入れる)
$dir:解凍先のディレクトリ名
解凍する圧縮ファイル名を記述際に、「/」を入れてください。(例:「sample.zip/」)
File_Archiveを使うことにより、サイトのバックアップを取ったり圧縮したファイルをアップロードしてサーバー上で解凍することも可能になります。
・関連記事
複数ファイルを圧縮してダウンロードしよう
