// remember, large objects must be obtained from within a transaction
pg_query ($dbconn, "begin");
// "assume" for this example that the large object resource number of the zipped file is "17899"
$lo_oid = 17899;
$handle_lo = pg_lo_open($dbconn,$lo_oid,"r") or die("<h1>Error.. can't get handle</h1>");
//headers to send to the browser before beginning the binary download
header('Accept-Ranges: bytes');
header('Content-Length: 32029974'); //this is the size of the zipped file
header('Keep-Alive: timeout=15, max=100');
header('Content-type: Application/x-zip');
header('Content-Disposition: attachment; filename="superjob.zip"');
pg_lo_read_all($handle_lo) or
die("<h1>Error, can't read large object.</h1>");
// committing the data transaction
pg_query ($dbconn, "commit");
pg_lo_read_all
(PHP 4 >= 4.2.0, PHP 5)
pg_lo_read_all — ラージオブジェクト全体を読み込みブラウザに直接送信する
説明
int pg_lo_read_all
( resource $large_object
)
pg_lo_read_all() は、ラージオブジェクトを読み込み 未送信のヘッダを全て送信した後、ブラウザに直接ラージオブジェクトを 送信します。これは主に、イメージや音などのバイナリデータを送信するために 使用します。
ラージオブジェクトインターフェースは、トランザクションブロックの中で 使用する必要があります。
注意: この関数は、以前は pg_loreadall() と呼ばれていました。
返り値
読み込んだバイト数を返します。エラー時には FALSE を返します。
例
例1 pg_lo_read_all() の例
<?php
header('Content-type: image/jpeg');
$image_oid = 189762345;
$database = pg_connect("dbname=jacarta");
pg_query($database, "begin");
$handle = pg_lo_open($database, $image_oid, "r");
pg_lo_read_all($handle);
pg_query($database, "commit");
?>
pg_lo_read_all
robert dot bernier5 at sympatico dot ca
24-Sep-2004 11:45
24-Sep-2004 11:45