massaoh 0 Denunciar post Postado Junho 15, 2007 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
_vina 0 Denunciar post Postado Junho 15, 2007 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