- Home ›
- PEAR入門 ›
- ファイルダウンロード(PEAR::HTTP_Download) ›
- HERE
複数のファイルをアーカイブして送信する
複数のディレクトリやファイル名をアーカイブしてからクライアントへ送信する方法を確認します。HTTP_Downloadクラスで用意されている「sendArchive」メソッドを使いかます。このメソッドはクラスメソッドです。
※ただしこのメソッドの使用は推奨されていないようです。実際には次のページの「HTTP_Download_Archive」クラスを使って下さい。
HTTP_Download::sendArchive() mixed HTTP_Download::sendArchive ( string $name, mixed $files, string [$type = HTTP_DOWNLOAD_TGZ], string [$add_path = ''], string [$strip_path = ''] )
引数: $name アーカイブファイルの名前 $files アーカイブの対象となるディレクトリやファイル名のリスト $type アーカイブのフォーマット (TAR, TGZ, BZ2 または ZIP) $add_path ファイルの前に追加するパス $strip_path ファイルから外すべきパス 戻り値: 成功時にはTRUE、失敗時にはPEAR_Error
1番目の引数にはダウンロードされるアーカイブのファイル名を指定します。
2番目の引数にはアーカイブの対象となるディレクトリやファイル名の一覧を指定します。指定は配列を使って順に対象となるディレクトリやファイル名を指定します。
3番目の引数にはアーカイブのフォーマットを指定します。指定できる値は次の通りです。
フォーマット | 指定する値 |
---|---|
TAR | HTTP_DOWNLOAD_TAR |
TGZ | HTTP_DOWNLOAD_TGZ |
BZ2 | HTTP_DOWNLOAD_BZ2 |
ZIP | HTTP_DOWNLOAD_ZIP |
使い方としては次のようになります。
require_once("HTTP/Download.php"); HTTP_Download::sendArchive( "download.zip", array("./download/", "./download2/"), HTTP_DOWNLOAD_ZIP );
サンプルプログラム
では簡単なサンプルで実際に試してみます。
<?php require_once("HTTP/Download.php"); HTTP_Download::sendArchive( "download.zip", array("./download/text/", "./download/img/"), HTTP_DOWNLOAD_ZIP ); ?>
ダウンロード用PHPを呼び出すためのHTMLファイルを用意しました。
<html> <head><title>PHP TEST</title></head> <body> <p>ダウンロードテスト</p> <p> <a href="./pearhttpdownloadtest4.php">ダウンロード</a> </p> </body> </html>
ダウンロードするファイルはPHPファイルが置かれているディレクトリに「download」と言うディレクトリを作成し、その中に更に「text」と「img」ディレクトリを作成してから「text」ディレクトリの中には「sample.txt」ファイルを置き「img」ディレクトリの中には「star.png」を置いておきました。
ではダウンロード用HTMLファイルをWWWサーバに設置しブラウザで見てみると下記のように表示されます。
「ダウンロード」と書かれたリンクをクリックして下さい。
指定したアーカイブ名でダウンロードを行います。実際にダウンロードされたファイルを見てみると次のように指定したディレクトリに含まれていたファイルがアーカイブされていることが確認できます。
( Written by Tatsuo Ikura )