Bom dia pessoal.
Gostaria de uma ajudinha… não estou conseguindo fazer um upload de um arquivo foto com sucesso, quando debugo vejo que esta vindo uma string de caracteres para serem gravados em um campo do tipo Blob no oracle, mais acontece que não grava, grava somente o id e o campo foto na tabela continua null. ai embaixo esta os codigos fontes.
codigo do xhtml.
<p:fileUpload fileUploadListener="#{jogadorController.handleFileUpload}"
mode="advanced"
update="messages"
sizeLimit="100000"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />
<p:commandButton value="Salvar" action="#{jogadorController.salva}" ajax="true" update="listaJogadores mensagens"/>
aqui o managed-Bean
<managed-bean>
<managed-bean-name>jogadorController</managed-bean-name>
<managed-bean-class>JogadorController</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>
classe jogador
public class Jogador {
private int id;
private byte[] foto;
public byte[] getFoto() {
return foto;
}
public void setFoto(byte[] foto) {
this.foto = foto;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
o controller
public class JogadorController {
private Jogador jogador = new Jogador();
private Jogador jogadorSelecionado = new Jogador();
private JogadorDAO dao = new JogadorDAO();
private List<Jogador> jogadores = new ArrayList<Jogador>();
private StreamedContent imagem;
public Jogador getJogadorSelecionado() {
return jogadorSelecionado;
}
public void setJogadorSelecionado(Jogador jogadorSelecionado) {
this.jogadorSelecionado = jogadorSelecionado;
}
public Jogador getJogador() {
return jogador;
}
public void setJogador(Jogador jogador) {
this.jogador = jogador;
}
public List<Jogador> getJogadores() {
return jogadores;
}
public void setJogadores(List<Jogador> jogadores) {
this.jogadores = jogadores;
}
public StreamedContent getImagem() {
return imagem;
}
public void setImagem(StreamedContent imagem) {
this.imagem = imagem;
}
public void handleFileUpload(FileUploadEvent event) {
try {
imagem = new DefaultStreamedContent(event.getFile().getInputstream());
byte[] foto = event.getFile().getContents();
this.jogador.setFoto(foto);
} catch (IOException ex) {
Logger.getLogger(JogadorController.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void salva() {
dao.salva(jogador);
}
}
o Dao
public class JogadorDAO {
Conector conector = new Conector();
private String sql;
private final String COL_ID = "id";
private final String COL_NOME = "nome";
private final String COL_ESTADO = "estado";
private final String COL_DESCRICAO = "descricao";
private final String COL_FOTO = "foto";
public void salva(Jogador jogador) {
try {
int id = 5;
Class.forName(conector.getDRIVER());
Connection connection = new Conector().getConnection();
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
String sSQL;
sSQL = "INSERT INTO jogadores ";
sSQL += "(ID,FOTO) ";
sSQL += "VALUES(";
sSQL += id + ", ";
sSQL += jogador.getFoto() + ")";
statement.executeQuery(sSQL);
connection.close();
}catch(ClassNotFoundException e){
System.out.println("Classe nao Localizada " + e);
}catch(SQLException esql){
System.out.println("Nao foi possivel realizar a conexao " + esql);
}
}}