導入 --
HTTP_Download の使用方法
導入
HTTP_Download は HTTP クライアントに
任意のデータを簡単に送出するためのインターフェースを提供します。
HTTP_Download はそれらのデータを変数、
ファイルあるいはストリームリソースから取得することができます。
このパッケージを使用することで、
(隠された)ダウンロードを簡単にハンドリングする事ができます。
「隠された」とは、誰もアクセスできない、という意味です。
たとえば、特別なダウンロードするものを制限したい場合です。
これは、HTTP 圧縮、キャッシング、そして部分的なダウンロード、
レジューム、そして、たとえばデータベースの
BLOB からの生データの送信をサポートします。
注意:
このパッケージと一緒に php.ini で ob_gzhandler や
zlib.output_compression を有効にして使用するべきではありません。
特に、すでに gzip 圧縮されたデータを送出する場合です。
使用例:
以下の例を見てください:
例 48-1静的な送出: 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); |
|
例 48-2隠されたファイルの送出: 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(); |
|
例 48-3任意データの送出: 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(); |
|
例 48-4帯域幅の制限: 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(); |
|
例 48-5PostgreSQL LOB の送出: 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(); |
|