Boa noite pessoal, tudo bem? estou precisando de um help aqui hehe
Bom, preciso salvar uma imagem no meu banco de dados.
imagem é um campo BLOB no meu banco(mysql)
tento salvar um byte[] mas ele sempre me retorna nulo e não salva.
meu xhtml
<h:form id="form" enctype="multipart/form-data">
<p:panel header="#{msg.TEMAS_TITULO}">
<h:panelGrid columns="2">
<h:outputText value="#{msg.LABEL_DESCRICAO_TEMA}" />
<p:inputText value="#{temaMB.tema.descricao}" />
<h:outputText value="#{msg.LABEL_ESCOLHA_IMAGEM_TEMA}" />
<p:fileUpload fileUploadListener="#{temaMB.handleFileUpload}" update="messages" />
</h:panelGrid >
<p:commandButton action="#{temaMB.salvar}" value="submit" />
</p:panel>
<p:growl id="messages" showDetail="true" />
</h:form>
meu Managed Bean
@ManagedBean
@RequestScoped
public class TemaMB implements Serializable {
private Tema tema = new Tema();
private TemasDAO dao = new TemasDAO();
public Tema getTema() {
return tema;
}
public void setTema(Tema tema) {
this.tema = tema;
}
public void handleFileUpload(FileUploadEvent evento) {
byte[] foto = evento.getFile().getContents();
tema.setImagem(foto);
}
public String salvar() {
String outcome = "FALHA";
if (dao.salvar(tema)) {
outcome = "SUCESSO";
}
return outcome;
}
}
e por fim meu dao
public class TemasDAO extends AbstractDAO<Tema> {
@Override
public boolean salvar(Tema tema) {
Connection conexao = null;
boolean salvo = false;
PreparedStatement ps;
try {
conexao = GerenciadorConexoes.pegarInstancia().abrirConexao();
String query = GerenciadorConexoes.pegarInstancia().pegarPropriedade("SALVAR_TEMA");
ps = conexao.prepareStatement(query);
ps.setString(1, tema.getDescricao());
ps.setBytes(2, tema.getImagem()); // aqui ele me retorna nulo e não salva no banco
if(ps.executeUpdate()>0){
salvo = true;
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
GerenciadorConexoes.pegarInstancia().fecharConexao(conexao);
}
return salvo;
}
se alguem puder me ajudar agradeço
abraços
