(PHP 4 >= 4.2.0, PHP 5)

pg_lo_read_all Odczytuje wielki obiekt (Large Object - LO) i wysła go do przeglądarki


int pg_lo_read_all ( resource $large_object )

pg_lo_read_all() odczytuje wielki obiekt (LO) i przekazuje go wprost do przeglądarki, po wysłaniu wszystkich nagłówków. Przeznaczony głównie do wysyłania danych binarnych, jak obrazy i dźwięk. Zwraca ilość odczytanych danych. Funkcja zwraca FALSE w razie błędu.

Użycie interfejsu wielkich obiektów (LO) wymaga zamknięcia wszystkich operacji z nim związanych wewnątrz transakcji.


Ta funkcja była poprzednio nazwana pg_loreadall().

Zobacz także pg_lo_read().

add a note add a note

User Contributed Notes 2 notes

robert dot bernier5 at sympatico dot ca
12 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=""');

pg_lo_read_all($handle_lo) or
  die("<h1>Error, can't read large object.</h1>");

// committing the data transaction
pg_query ($dbconn, "commit");
fabar2 at libero dot it
5 years ago
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.
To Top