PDA

Ver la Versión Completa : ibase_blob_get


barman
09-04-2004, 15:31:05
Guenas, llevo pegandome varios dias con esto y no soy capaz de sacarlo, de echo no he visto que nadie lo use, pero hay, estoy intentando visualizar un campo blod en intervase, el campo contiene una grafica, le pongo por donde he tirado:

$result = ibase_query("SELECT GRAFICA FROM ...........");
$data = ibase_fetch_object($result);


$blob_data = ibase_blob_info($data->BLOB_VALUE);
$blob_hndl = ibase_blob_open($data->BLOB_VALUE);
echo ibase_blob_get($blob_hndl, $blob_data[0]);


$blob_id = ibase_blob_open($row->V_BLOB);

while($data = ibase_blob_get($blob_id , 8192)){
gravo en fichero.

etc,etc,etc, la verdad he probado todas las combinaciones posible y no sale.

kinobi
09-04-2004, 16:20:36
Hola,

te pego un trozo de código que a mí me funcionó hace tiempo. Yo usaba una biblioteca (ADOdb) por encima del API InterBase de PHP, pero como ésta no tenía soporte para BLOBs, tuve que echar mano directamente al API ...

Primero una función que me devuelve (en bruto) el contenido del BLOB:


function ObtenerBlob($pBlobId)
{
$BlobId = ibase_blob_open($pBlobId);
$BlobReal = ibase_blob_get($BlobId, 99999); // tamaño máximo -> 99999
ibase_blob_close($BlobId);

return $BlobReal;
}


Uso:


// supongo que ya tienes el cursor abierto
// ...
$vIdBlob = $vRecordSet->fields[4]; // Fields("EnlaceDescripcion"));
// $vIdBlob contiene el identificador del BLOB

$vEnlaceDescripcion = "";
if (IsSet($vIdBlob)) {
$vEnlaceDescripcion = ObtenerBlob($vIdBlob);
}
// ...
// en $vEnlaceDescripcion tendrás el contenido del BLOB


Saludos

barman
14-04-2004, 17:41:58
Gracias por tu repuesta, pero no termina de funcionar, si son campos de texto, vale, pero si son graficos me llena la pantalla de caracteres, lo que quiere decir que algo ha echo, voy a intentar salvarlo a un fichero y recuperarlo con un enlaze a una pagina, y te comento.

1000 g.

barman
14-04-2004, 18:02:44
GUAY.

if (IsSet($vIdBlob)) {
$vEnlaceDescripcion = ObtenerBlob($vIdBlob);
// echo $vEnlaceDescripcion ;
// ibase_blob_echo($vEnlaceDescripcion );

$TEMPFILE .= "c:\pr1.bmp";
$FILEID = fopen($TEMPFILE,"w");
fputs($FILEID ,$vEnlaceDescripcion);
fclose($FILEID);
}

}



?>
<CENTER><IMG SRC="c:\pr1.bmp"></CENTER>";

1000 G (agains).