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

メモ:  Category:pear

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

bluenote by BBB