Pay attention that if you omit the "length" parameter it will read a 8192 bytes object regardless to its real dimensions. If you want to use this function think to save the object size somewhere (usually a field in its table) before reading the object. Alternatively use the pg_lo_readall function.
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");
?>
fabar2 at libero dot it ¶
1 year ago
robert dot bernier5 at sympatico dot ca ¶
8 years ago
// 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");
