FileDownload is used to stream binary contents like files stored in database to the client. FileDownload is used by attaching it to any JSF command component like button or a link. Additionally presentation of download can be configured with the contentDisposition attribute that takes either "attachment" or "inline" as a value.
Documentation<script type="text/javascript"> //<![CDATA[ function start() { PF('statusDialog').show(); } function stop() { PF('statusDialog').hide(); } //]]> </script> <p:dialog modal="true" widgetVar="statusDialog" header="Status" draggable="false" closable="false" resizable="false"> <p:graphicImage name="/demo/images/ajaxloadingbar.gif" /> </p:dialog> <h:form> <p:commandButton value="Download" ajax="false" onclick="PrimeFaces.monitorDownload(start, stop);" icon="pi pi-arrow-down"> <p:fileDownload value="#{fileDownloadView.file}" /> </p:commandButton> </h:form>
@Named @RequestScoped public class FileDownloadView { private StreamedContent file; public FileDownloadView() { file = DefaultStreamedContent.builder() .name("downloaded_boromir.jpg") .contentType("image/jpg") .stream(() -> FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("/resources/demo/images/boromir.jpg")) .build(); } public StreamedContent getFile() { return file; } }