// 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 — Lit un objet de grande taille en totalité
Description
int pg_lo_read_all
( resource $large_object
)
pg_lo_read_all() lit un objet de grande taille en totalité et le passe directement au client, après les en-têtes adéquates. Cette fonction est prévue pour transmettre des sons ou des images.
Pour utiliser un objet de grande taille (lo), il est nécessaire de le faire dans une transaction.
Note: Auparavant, cette fonction s'appelait pg_loreadall().
Liste de paramètres
- large_object
-
Ressource objet de grande taille (LOB) PostgreSQL retournée par pg_lo_open().
Valeurs de retour
Nombre d'octets lu ou FALSE en cas d'erreur.
Exemples
Exemple #1 Exemple avec 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 04:45
24-Sep-2004 04:45
