Olá, e agora que já fizemos o upload de imagens utilizando Ajax em uma função Javascript. E também já conseguimos enviá-la em base64 para o servidor, chegou o momento de fazer o insert na base de dados. E é o que iremos fazer no tutorial de hoje.
No caso dessa aplicação, não iremos gravar a URL e não iremos gravar em uma pasta no servidor. Estas opções são ideias para sistemas grandes e robustos cujo upload de imagens acontecem a todo momento, e/ou quando estamos lidando com imagens pesadas e/ou grandes.
Então, uma vez que já temos a imagem sendo carregada para o servidor, precisamos então criar um insert para salvá-la no banco de dados. Mas para não temos que implementar toda uma rotina e criar um novo DAO, um servlet somente para salvar uma imagem, utilizaremos o que já temos pronto. Poderemos reutilizar uma estrutura já pronta.
Utilizaremos, desse modo, a base de dados criada no módulo anterior, curso-jsp, onde já temos uma tabela usuário, e nela criaremos uma coluna do tipo texto (text). O tipo text compreende dados não Unicode com um comprimento máximo de cadeia de caracteres de 2^31-1, ideal para receber arquivos em base64.
BANCO DE DADOS
Abra o seu pgAdmin, selecione a base de dados curso-jsp, e na base de dados, selecione a tabela usuário. No SQL Editor o que iremos fazer é alterar a tabela usuário adicionando uma nova coluna do tipo text. Após, inserir a linha de código abaixo, selecione e atualize (F5).
ALTER TABLE usuario ADD COLUMN imagem text;
SERVLET | DAO
E agora é preciso declarar e instanciar a classe DAO – Data Access Object no servlet FileUpload. O DAO é usado para receber todas as operações de banco de dados, separadamente da regra de negócio, definindo assim as operações padrões em um objeto.
E dentro do bloco try, antes de escrevermos uma mensagem para o usuário é preciso gravar a imagem no banco. Então, chamaremos o método gravarImagem() e passaremos como argumento a imagem.
Mas ainda não temos este método criado, então a IDE chamará a nossa atenção para este fato, “acendendo” uma lâmpada a esquerda, clique sobre e escolha a opção de criar o método.
DAO
O método gravarImagem() será criado no final da classe DAO, e no escopo dele iremos criar o insert. Isto é, adicionar na tabela usuario a imagem.E para gravar a imagem precisamos chamar o PreparedStatement, que tem a responsabilidade de montar a query (String), sem que tenhamos que concatenar as condições, desde que os parâmetros sejam passados corretamente. E por fim, o insert passando corretamente os parâmetros e executamos.
EM POUCAS PALAVRAS
E com esta implementação onde já estamos gravando a imagem na base de dados com sucesso, nossa série de tutoriais sobre upload está quase no fim. Mas ao verificar no banco se a imagem foi gravada, o referido campo da tabela estará em branco. Mas ao selecionar o campo correspondente, copiar com CTRL C o seu conteúdo e colar, CTRL V, em algum bloco de notas será possível exibir toda a codificação em base64 da imagem. Este é um problema comum do PostgreSQL. Eu fico por aqui e nós nos vemos no próximo tutorial. Eu fico por aqui, nos vemos no próximo tutorial.