HTTP_Download は HTTP クライアントに 任意のデータを簡単に送出するためのインターフェースを提供します。 HTTP_Download はそれらのデータを変数、 ファイルあるいはストリームリソースから取得することができます。
このパッケージを使用することで、 (隠された)ダウンロードを簡単にハンドリングする事ができます。 「隠された」とは、誰もアクセスできない、という意味です。 たとえば、特別なダウンロードするものを制限したい場合です。 これは、HTTP 圧縮、キャッシング、そして部分的なダウンロード、 レジューム、そして、たとえばデータベースの BLOB からの生データの送信をサポートします。
注意: このパッケージと一緒に php.ini で ob_gzhandler や zlib.output_compression を有効にして使用するべきではありません。 特に、すでに gzip 圧縮されたデータを送出する場合です。
以下の例を見てください:
静的な送出:
<?php
1 $params = array(
2 'file' => '../hidden/download.tgz',
3 'contenttype' => 'application/x-gzip',
4 'contentdisposition' => array(HTTP_DOWNLOAD_ATTACHMENT, 'latest.tgz'),
5 );
6
7 $error = HTTP_Download::staticSend($params, false);
?>
隠されたファイルの送出:
<?php
1 $dl = &new HTTP_Download();
2 $dl->setFile('../hidden/download.tgz');
3 $dl->setContentDisposition(HTTP_DOWNLOAD_ATTACHMENT, 'latest.tgz');
4 // with ext/magic.mime
5 // $dl->guessContentType();
6 // else:
7 $dl->setContentType('application/x-gzip');
8 $dl->send();
?>
任意データの送出:
<?php
1 $dl = &new HTTP_Download();
2 $dl->setData($data);
3 $dl->setLastModified($unix_timestamp);
4 $dl->setContentType('application/x-gzip');
5 $dl->setContentDisposition(HTTP_DOWNLOAD_ATTACHMENT, 'latest.tgz');
6 $dl->send();
?>
帯域幅の制限:
<?php
1 $dl = &new HTTP_Download();
2 $dl->setFile('huge_file.bin');
3 $dl->setBufferSize(25 * 1024); // 25 K
4 $dl->setThrottleDelay(1); // 1 sec
5 $dl->send();
?>
PostgreSQL LOB の送出:
<?php
1 require_once 'HTTP/Download.php';
2 require_once 'HTTP/Download/PgLOB.php';
3 $dl = &new HTTP_Download();
4 $dl->setResource(
5 HTTP_Download_PgLOB::open(pg_connect('dbname=lobs'), 12345));
6 $dl->send();
?>