I want to download blob files from mysql database I have a class named (projeler)
public class projeler {
private String projead;
private String projekonu;
private String projedurum;
private String projegorev;
private String projebastar;
private String projebittar;
private InputStream projekanit;
getters and setters
}
In below datatable kntrl.projelistedondur() method return arraylist (projeler) from database to display all of data in it.
<h:dataTable border="1" cellpadding="7px" value="#{kntrl.projelistedondur()}" var="proje" id="projetablo" rendered="#{kntrl.projetabloaktif}">
<h:column >
<f:facet name="header" >Proje Adı</f:facet>
#{proje.projead}
</h:column>
<h:column>
<f:facet name="header">Proje Konusu</f:facet>
#{proje.projekonu}
</h:column>
<h:column>
<f:facet name="header">Proje Durumu</f:facet>
#{proje.projedurum}
</h:column>
<h:column>
<f:facet name="header">Proje Görevi</f:facet>
#{proje.projegorev}
</h:column>
<h:column>
<f:facet name="header">Proje Başlangıç Tarihi</f:facet>
#{proje.projebastar}
</h:column>
<h:column>
<f:facet name="header">Proje Bitiş Tarihi</f:facet>
#{proje.projebittar}
</h:column>
<h:column>
<f:facet name="header">Proje Kanıtı</f:facet>
<p:commandLink ajax="false" value="Kanıtı İndir" action="#{kntrl.projedownload(file)}">
</p:commandLink>
</h:column>
</h:dataTable>
In this column am going to pass my inputstream(so blob variable) to backing bean method.
<h:column>
<f:facet name="header">Proje Kanıtı</f:facet>
<p:commandLink ajax="false" value="Kanıtı İndir" action="#{kntrl.projedownload(file)}">
</p:commandLink>
filedownload method in backing bean
public StreamedContent projedownload(projeler file){
StreamedContent download = null;
try{
// byte[] bytes = (byte[]) file.get
//InputStream ist =(InputStream) file;
//download = new DefaultStreamedContent(ist, "application/pdf","projekanit.pdf");
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
externalContext.setResponseHeader("Content-Type", file.getContentType());
externalContext.setResponseHeader("Content-Length", file.getContent().length);
externalContext.setResponseHeader("Content-Disposition", "attachment;filename=\"" + file.getFileName() + "\"");
externalContext.getResponseOutputStream().write(file.getContent());
facesContext.responseComplete();
}
catch(Exception e){
e.printStackTrace();
// Add error message
FacesMessage errorMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Download error", e.getMessage());
FacesContext.getCurrentInstance().addMessage(null, errorMsg);
}
return download;
}
I have tried above.But didn't work.Briefly am sending inputstream to file download method as java.io.File and am confused.How can i download files from database.