Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   ibase_blob_get (https://www.clubdelphi.com/foros/showthread.php?t=9007)

barman 09-04-2004 14:31:05

ibase_blob_get
 
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 15: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:

Código PHP:

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

    return 
$BlobReal;
  } 

Uso:

Código PHP:

  // 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 16: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 17: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).


La franja horaria es GMT +2. Ahora son las 03:27:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi