ACDias 0 Denunciar post Postado Agosto 2, 2006 Bem minha dúvida é a seguinte:Eu tenho meu banco e em uma tabela armazenarei imagens, nessa tabela tenho um campo do tipo bytea, que é onde a imagem ficará armazenada. O meu problema é que não sei qual o comando que uso para pegar a imagem que o usuário indicou através de um "<input type='file'..." e armazenar no banco. Alguém tem alguma sugestão de como resolver esse problema?Pensei em fazer upload da imagem, carregar a imagem através de um fopen e jogá-la no banco, mas não sei se funciona (não testei ainda) e acho que terá uma baixa performance.Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Diêgo Garrido 0 Denunciar post Postado Agosto 3, 2006 Bom, normalmente eu armazeno imagens apenas com o postgresql q eh um db mais robusto, gosto muito de armazenar imagens nele, e discordo com pessoas que dizem q não é legal, Organiza mais os sistemas, não manipula arquivos importantes no ftp, e afinal, numa noticias, as imagens também são dados... Muitos dos famosos HD virtuais existentes, trabalham com arquivos em bancos de dados... Bom, pra guardar uma imagem no pg você faz assim: (recebendo os dados do formulario) <?$arquivo = fopen($_FILES['arquivo']['tmp_name'],'r');$dados = fread($arquivo,filesize($_FILES['arquivo']['tmp_name']));$dados = addslashes($dados);$insert = "INSERT INTO imagens (imagem,tamanho,tipo) VALUES ('".$dados."','".$_FILES['arquivo']['size']."','".$_FILES['arquivo']['type']."')";(CONECTA-SE AO BANCO COM A SQL ACIMA)?> Para puxar os dados: <?$select = "SELECT * FROM imagens WHERE id = '1'";$resultado = $db->conecta_banco($select);$dados = pg_fetch_array($resultado); header("Content-type: ".$dados['tipo']); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Pragma: Cache");echo stripcslashes($dados['imagem']);?> PS: o campo IMAGEM deve ser do tipo BYTEA para este caso...; RECOMENDO o campo tamanho como BIGINT Compartilhar este post Link para o post Compartilhar em outros sites
ACDias 0 Denunciar post Postado Agosto 4, 2006 Galera, vlw pelas respostas. Diêgo, era isso mesmo q eu queria. Tomás concordo com você q seria melhor e tornaria o banco menos pesado, mas tenho q armazenar elas no banco pq meu orientador me disse q seria melhor assim (não me lembro as razões q ele apontou, mas na época q estávamos desenvolvendo o DER eu concordei).Vlwt+ Compartilhar este post Link para o post Compartilhar em outros sites
Diêgo Garrido 0 Denunciar post Postado Agosto 5, 2006 Tomás, bom, concordo com sua tese em termos... Seguinte, armazenar imagens pequenas em torno de 25k como BYTEA no pgsql, gera o mesmo comportamento de medios textos, ñão concordo com o armazenamento de grandes arquivos em bancos de dados como pqsql, porém, imagens para web, pequenas, não vão pesar o db mais que pesaria um texto do mesmo tamanho (25k) armazenado, isto por se tratar de um campo bytea, onde os dados são também gravados em forma de texto... http://www.brflog.net dêem uma olhada no meu fotolog, as imagens são gravadas no banco de dados... são tratadas, redimensionadas e optimizadas pelo script e jodas para o db, tenho o mesmo sistema trabalhando manipulando as imagens no ftp, no mesmo servidor, por enquanto naum vi nenhuma diferença, porém, qdo ouver alguma diferença mudarei com toda certeza o meu ponto de vista. Abraços! Compartilhar este post Link para o post Compartilhar em outros sites
ACDias 0 Denunciar post Postado Agosto 7, 2006 header("Content-type: ".$dados['tipo']);header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");header("Pragma: Cache");Só uma dúvida Diego: esse trecho é mesmo necessário? pra q ele serve? E eu não estou conseguindo mostrar a imagem! Segue o meu código: $db = pg_connect("dbname=teste user=postgres password=postgresql"); $arquivo = fopen(addslashes($_FILES['img']['tmp_name']),'r'); $dados = fread($arquivo,filesize($_FILES['img']['tmp_name']));; $dados = addslashes($dados); fclose($arquivo); $tipo = $_FILES['img']['type']; $insert = "INSERT INTO images VALUES ('".$dados."','".$tipo."')"; if(!pg_query($insert)) echo"<br>$insert"; else echo"sucesso"; pg_close(); $select = "SELECT * FROM images"; $db = pg_connect("dbname=teste user=postgres password=postgresql"); $resultado = pg_query($select); $data = pg_fetch_array($resultado); if(file_exists("teste.".$data['tipo'])) unlink("teste.".$data['tipo']); $file = fopen("teste.".$data['tipo'],"w"); fwrite($file,stripslashes($data['img'])); fclose($file); echo "<img src='teste.".$data['tipo']."'>"; pg_close();Alguém pode me ajudar? Vlw Compartilhar este post Link para o post Compartilhar em outros sites
ACDias 0 Denunciar post Postado Agosto 7, 2006 Descobri qual é o erro. A imagem não está sendo criada corretamente! Porém não sei onde está o erro no código! Alguém pode me esclarescer? Compartilhar este post Link para o post Compartilhar em outros sites
ACDias 0 Denunciar post Postado Agosto 8, 2006 Por favor alguém me ajude! Preciso muito disso! Compartilhar este post Link para o post Compartilhar em outros sites