pg_lo_read_all

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

pg_lo_read_all读取整个大对象并直接发送到浏览器

描述

pg_lo_read_all(PgSql\Lob $lob): int

pg_lo_read_all() 读取一个大对象,并在发送所有待处理的标头后直接将其传递到浏览器。主要用于发送二进制数据,例如图像或声音。

要使用大对象接口,需要将其包含在事务块中。

注意:

此函数以前称为 pg_loreadall()

参数

lob

一个 PgSql\Lob 实例,由 pg_lo_open() 返回。

返回值

读取的字节数。

变更日志

版本 描述
8.1.0 lob 参数现在需要一个 PgSql\Lob 实例;以前需要一个 资源

范例

范例 #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");
?>

参见

添加备注

用户贡献的备注 2 个备注

2
robert dot bernier5 at sympatico dot ca
19 年前
// 请记住,大对象必须从事务中获取
pg_query ($dbconn, "begin");

// 为此示例“假设”压缩文件的 large object 资源号为“17899”

$lo_oid = 17899;

$handle_lo = pg_lo_open($dbconn,$lo_oid,"r") or die("<h1>错误.. 无法获取句柄</h1>");

// 在开始二进制下载之前发送到浏览器的标头
header('Accept-Ranges: bytes');
header('Content-Length: 32029974'); // 这是压缩文件的大小
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>错误,无法读取大对象。</h1>");

// 提交数据事务
pg_query ($dbconn, "commit");
0
fabar2 at libero dot it
12 年前
请注意,如果您省略“length”参数,它将读取一个 8192 字节的对象,无论其实际尺寸如何。如果您想使用此函数,请考虑在读取对象之前将对象大小保存在某个地方(通常是其表的字段中)。或者使用 pg_lo_readall 函数。
To Top