Gravar foto no postgres

Boa noite !

Estou com a seguinte situação :

Tenho uma aplicação web, onde preciso armazenar fotos, onde as mesmas ficaram no BD, defini um campo foto do tipo Bytea.

So que como sou iniciante em JAVA, não estou sabendo como capturar, gravar e depois recuperar do BD, lembrando q a minha aplicação é WEB.

Obrigada pela atenção !

Você ta usando algum framework web (Struts, VRaptor, etc )?

  1. qual framework vc usa para camada de apresentação ? pergunto isto pois será necessário para fazer o upload do arquivo!
  2. qual framework vc utiliza para persistência dos dados ? JDBC ?

Estou usando o Struts, hibernate

No form da sua jsp coloque algo do tipo:

<html:form action="/FileUpload" method="post" enctype="multipart/form-data">

No seu ActionForm crie um FormFile

private FormFile theFile; // getters and setters

Na sua Action então você pode usar:

FormFile myFile = myForm.getTheFile(); String contentType = myFile.getContentType(); String fileName = myFile.getFileName(); int fileSize = myFile.getFileSize(); byte[] fileData = myFile.getFileData(); System.out.println("contentType: " + contentType); System.out.println("File Name: " + fileName); System.out.println("File Size: " + fileSize);

apartir daí vc consegue gravar em um campo blog da sua tabela

o exemplo acima do colega ira resolver o seu problema para resgatar o arquivo requisitado pelo cliente.
a partir de um formFile, voce podera passar para um File e/ou array de bytes e enviar para a camada de servico como um objeto que nao dependa tanto de infra-estrutura.

lembre-se deixe a sua camada de servico limpa e ela deve conhecer apenas objetos de negocio, podendo ate trafegar um file, stream ou array de bytes.

  [b]editado[/b]: portanto, nada de passar FormFile para camada de servico

voce deve ter um atributo no hibernate que mapeia um atributo como bytes[]. veja aqui como pode te ajudar!

caso voce tenha problemas ao persistir, voce devera ter uma implementacao do tipo blob para fazer este mapeamento