HTTP_Downloadでファイルをクライアントへダウンロード
Pear にHTTP_Download(1.1.0)と呼ばれる HTTP クライアントに任意のデータを送出するパッケージがあります。
Pear のマニュアルでは、次のような注意書きがあります。
注意: このパッケージと一緒に php.ini で ob_gzhandler や zlib.output_compression を有効にして使用するべきではありません。 特に、すでに gzip 圧縮されたデータ を送出する場合です。
任意のファイル、例えばbnote.zipというファイルをダウンロードさせるとします。
<?php
require_once 'HTTP/Download.php';
$objDl = new HTTP_Download();
$objDl->setFile('../files/bnote.zip');
$objDl->setContentDisposition(HTTP_DOWNLOAD_ATTACHMENT, 'latest.zip');
$objDl->setContentType('application/zip');
$objDl->send();
?>
以上でダウンロードされます。
もうひとつの方法として、明示的にインスタンスを生成しないでダウンロードさせる方法も提供されています。
<?php
$params = array(
'file' => '../files/bnote.zip',
'contenttype' => 'application/zip',
'contentdisposition' => array(HTTP_DOWNLOAD_ATTACHMENT, 'latest.zip'),
);
$ret = HTTP_Download::staticSend($params);
?>
実際、staticSend関数内部では $d = &new HTTP_Download(); としてインスタンス化されています。