PHP 8.4.0 RC4 available for testing

pg_lo_read_all

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_lo_read_all Lê um objeto grande inteiro e envia direto para o navegador

Descrição

pg_lo_read_all(PgSql\Lob $lob): int

pg_lo_read_all() lê um objeto grande e o passa direto para o navegador após enviar todos os cabeçalhos pendentes. Destinado principalmente ao envio de dados binários como imagens ou som.

Para usar a interface de objeto grande, é necessário incluí-la em um bloco de transação.

Nota:

Esta função costumava ser chamada de pg_loreadall().

Parâmetros

lob

Uma instância de PgSql\Lob, retornada por pg_lo_open().

Valor Retornado

Número de bytes lidos.

Registro de Alterações

Versão Descrição
8.1.0 O parâmetro lob agora espera uma instância de PgSql\Lob; anteriormente, um resource era esperado.

Exemplos

Exemplo #1 Exemplo de 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");
?>

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 2 notes

up
1
robert dot bernier5 at sympatico dot ca
20 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");
up
0
fabar2 at libero dot it
13 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