HTTP_Downloadでファイルをクライアントへダウンロード[Pear::HTTP_Download]

PearHTTP_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();としてインスタンス化 されています。