Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

massaoh

Recuperando campo Blob em PHP

Recommended Posts

Olá eu estou tendo um problema com o PHP na recuperação de uma imagem de um banco em firebird.

O que eu tenho que fazer é o upload da imagem, gravar em banco (realmente tenho q gravar em banco não pode ser em uma pasta) esta imagem, e recuperar a imagem para mostrar em uma consulta,

A imagem é gravada em um campo blob, para realizar o upload da imagem eu utiliza o seguinte código:

 

if ($_FILES["file"]["error"] > 0){		echo "Error: " . $_FILES["file"]["error"] . "<br />";	}else{		$nome = $_FILES["file"]["name"];	$caminho = $_FILES["file"]["tmp_name"];	$tam = $_FILES["file"]["size"];	$fp = fopen($caminho, "rb");		$buffer = fread($fp, $tam);	fclose($fp);	  $blh = ibase_blob_create($con);	  ibase_blob_add($blh, $buffer);	  $blobid = ibase_blob_close($blh);	$sql = "INSERT INTO imagem(nome, imagem) VALUES (?,?)";			  $sth = ibase_query($con, $sql, $nome, $blobid) or die(ibase_errmsg()); 	}

Observem que eu gravei em um buffer a leitura do arquivo (este codigo eu mesclei com outros dois que tinham me enviado).

Obs: o upload est funcionando pois eu fiz um programa em jsp para recuperar a imagem, justamente para testar isto, porém com o jsp é mais fácil pois ele possui classes para manipular blob.

Durante a tentativa de download utilizei com o seguinte codigo utilizando xajax para atualizar a imagem diretamente em uma div, este código eu recebi como resposta em um forum estrangeiro:

 

function consultar($id, $codigo){	$sql = "SELECT imagem.imagem FROM imagem WHERE codigo = ".$codigo;				$query = ibase_prepare($sql);	$qryAuten = ibase_execute($query);	$buffer;	if($linha = ibase_fetch_row($qryAuten)){		$buffer.=$linha[0];	}				$blob_data = ibase_blob_info($buffer->BLOB_VALUE);		$blob_hndl = ibase_blob_open($buffer->BLOB_VALUE);		$imagem = ibase_blob_get($blob_hndl, $blob_data[1]);	$objResponse = new xajaxResponse();	$objResponse->addAssign($id,"innerHTML", $imagem);	return $objResponse;}

Bom a resposta que o cara me deu foi que eu poderia retonar a imagem diretamente com o innerHTML o problema é que depois de implmentar e testar eu percebi que eu estou passando um array de bytes para o banco e recuperando este, porém não estou reestruturando a imagem.

Como não sei quais métodos utilizar para pegar o conteudo do buffer e recriar a imagem, resolvi procurar ajuda, então se alguém puder me dar uma mão, ou tiver outra sugestão para o que eu estou fazendo, eu agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra o caminho da img você pode gravar no banco!a o arquivo físico mesmo tem q ficar em algum lugar no servidorseila hehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.