Visualizzare campo Blob da Mssql

3 contenuti / 0 new
Ultimo contenuto
Visualizzare campo Blob da Mssql

Aiuto !!!!!!, sono nella .....
E' da un pò di tempo che sono sopra questo problema, al quale non sono riuscita a dare una risposta.
Il mio codice PHP deve estrarre da un db di mssql un campo di tipo blob.
L'estazione dei dati è riuscita, il problema è la visualizzazione del campo blob in una pagina di drupal che visualizza simboli starni , tipo rombi con un punto interrogativo all'interno.
perchè dico che il problema è drupal??
Perchè ho provato lo stessso codice php in un progetto nuovo che non utilizza drupal e l'immagina contenuta all'interno del campo blob si visualizza senza problemi.
Questo è il codice che estrae e visualizza lìimagine tramite una echo di php ma non funziona o meglio non visualizza l'immagine

$conn = sqlsrv_connect($serverName, $connInfo);

if($conn)
{
// echo "Connection established.";
}
else
{
//echo "Connection could not be established.";
die(print_r(sqls_errors(),true));
}

$sql = "SELECT ADOTTATI.Ado_Nome, ADOTTATI.Ado_Cognome, ADOTTATI.Ado_EstensFoto, ADOTTATI.Ado_Foto
FROM ADOTTATI
WHERE '5680' = ADOTTATI.Ado_Codice ";
//echo $sql;

$param = array(1,"some data");

$stmt = sqlsrv_query($conn,$sql, $param);

if($stmt==false)
{
die(print_r(sqlsrv_errors(), true));

}

$array = sqlsrv_fetch_array($stmt);

drupal_add_http_header('Content-type','image/jpg');

echo $array['Ado_Foto'] ;

Drupal Version:

NO-> echo $array['Ado_Foto'] ;
SI-> echo '< i m g s r c ="'.$array['Ado_Foto'].'" alt="immagine" >';

Ciao

Il problema non è Drupal ma html e http ...comunque

quello che vuoi fare sarebbe avere una pagina Drupal con all'interno un'immagine, la via per avere una pagina drupal con un'immagine che di fatto non esiste ma è un blob binario potrebbe essere questa:

Inserire nella pagina un'immagine il cui contenuto è nella pagina stessa (embedded image) grazie alla sintassi html:

<img alt="Embedded Image"  src="data:image/png;base64,iVBORw0KGgoAAAA..." />

Siccome pero il tuo "dato" è binario devi ricordardi di codificarlo in base64 tramite base64_encode() di php quindi una roba tipo:

<?php
  $dato64
= base64_encode($datobinario);
  echo
"<img alt='Embedded Image'  src='data:image/png;base64,$dato64 '/>"
?>

Per refernza:
http://php.net/manual/en/function.base64-encode.php
http://www.greywyvern.com/code/php/binary2base64
http://stackoverflow.com/questions/1207190/embedding-base64-images