Boa noite, estou tentando pegar um arquivo pdf de um xhtml, e na hora de salvar no banco, quero transformá-lo em um array de bytes, para isso, no meu DAO eu faço assim:
public boolean CadastrarAluno(Aluno a) throws FileNotFoundException {
Connection con = Conexao.getConnection();
PreparedStatement stmt = null;
try {
String sql = "INSERT INTO aluno(matricula, instituicao, curso, id_pessoa,arquivo) values(?,?,?,?,?)";
stmt = con.prepareStatement(sql);
stmt.setInt(1, a.getMatriculaAluno());
stmt.setString(2, a.getInstituicao());
stmt.setString(3, a.getCurso());
stmt.setInt(4, ultimaId);
FileInputStream fis = new FileInputStream(a.getArquivorecebido());
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
try {
for (int readNum; (readNum = fis.read(buf)) != -1;) {
bos.write(buf, 0, readNum); //no doubt here is 0
}
} catch (IOException ex) {
ex.printStackTrace();
}
byte[] bytes = bos.toByteArray();
stmt.setBytes(5, bytes);
stmt.executeUpdate();
System.out.println("Query-------"+stmt);
return true;
} catch (SQLException ex) {
System.out.println(ex);
return false;
} finally {
Conexao.closeConnection(con, stmt);
}
}
Parte do meu xhtml que recebe o arquivo
<p:fileUpload id="declaracao" value="#{alunoMB.aluno.arquivorecebido}" mode="simple" dragDropSupport="false" update="messages" sizeLimit="100000" fileLimit="1"/>
Minha classe modelo:
private int idAluno;
private File arquivorecebido;
public File getArquivorecebido() {
return arquivorecebido;
}
public void setArquivorecebido(File arquivorecebido) {
this.arquivorecebido = arquivorecebido;
}
Mas quando eu executo, me retorna o erro:
java.lang.NullPointerException
at java.io.FileInputStream.<init>(FileInputStream.java:130)
Da a entender que eu tenho que inicializar esse file input stream, mas não entendi como, se alguém puder dar um norte eu agradeço