我正在使用Codeigniter从oracle数据库中检索HUGEBLOB图像。当我获得图像时,它会给出资源ID#45。
我的问题是,
为什么要给出资源ID? 如何将资产转换为字符串并显示此图像?
我的代码是,
EditText
请帮助我,我被困在这里。
答案 0 :(得分:0)
请参阅PDO documentation on handling LOBS:
PDO允许您使用
PDO::PARAM_LOB
或PDOStatement::bindParam()
来电中的PDOStatement::bindColumn()
类型代码来处理此大数据类型。PDO::PARAM_LOB
告诉PDO将数据映射为流,以便您可以使用PHP Streams API对其进行操作。
Example 1显示'显示数据库中的图像':
$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2');
$stmt = $db->prepare("select contenttype, imagedata from images where id=?");
$stmt->execute(array($_GET['id']));
$stmt->bindColumn(1, $type, PDO::PARAM_STR, 256);
$stmt->bindColumn(2, $lob, PDO::PARAM_LOB);
$stmt->fetch(PDO::FETCH_BOUND);
header("Content-Type: $type");
fpassthru($lob);
如果您的代码中使用的对象是该框架的一部分,您可能需要与CodeIgniter文档交叉引用。
如果返回的资源属于stream
类型(如示例代码中所示),那么可能可以像这样使用stream_get_contents
:
$this->output->set_header('content-type: image/jpeg');
echo stream_get_contents($row['PIC']);