Boa tarde pessoal,
Estou com muiiita dificuldade em conseguir efetuar um campo para download no JSF, não sei como posso resolver isso, pesquisei em alguns sites mas não encontrei nada que pudesse suprir as minhas necessidades, sendo assim, se alguem já passou por isso, e se for possível postar ficarei muito grato.
Segue as ferramentas que estou utilizando: JSF (rich faces) + Hibernate + Mysql.
Obs. Para melhor entender, eu tenho que gravar um arquivo no banco de dados (upload), esse processo já foi feito, porem não sei como posso proceder para fazer o processo inverso, ou seja, fazer o deownload. Criei até um metodo que converte um byte[] em um objeto e depois tranformei ele em um arquivo, mas não consigo fazer o download atraves do JSF(utilizando o rich faces).
Segue o codigo para que possa entender:
Metodo que transforma um byte[] em um objeto:
public Object adicionaArquivoByteObject(byte[] adicionaArquivo) {
ByteArrayInputStream bais = null;
ObjectInputStream in = null;
Object objArquivo = null;
try {
bais = new ByteArrayInputStream(adicionaArquivo);
in = new ObjectInputStream(bais);
objArquivo = (Object) in.readObject();
in.close();
} catch (Throwable ex) {
}
return objArquivo;
}
public String downloadCertificadoDigital(String cnpj){
List<CertificadoDigital> fileCertificadoDigitalByte = this.daoFactory.getCertificadoDigitalDaoClass().listaCertificadoDigital(cnpj);
byte[] objByte = fileCertificadoDigitalByte.get(0).getArquivo();
List<UploadItem> objUpload = (List<UploadItem>) this.certificadoDigital.adicionaArquivoByteObject(objByte);
UploadItem objUploading = objUpload.get(0);
objUploading.getFile();
return "";
}
Grato desde já
Elton C.