In supported browsers, a file can be selected by dragdrop from filesystem. FileUpload component itself is the drop zone.
Documentation<h:form> <p:fileUpload listener="#{fileUploadView.handleFileUpload}" mode="advanced" dragDropSupport="true" update="messages" sizeLimit="100000" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" /> <p:growl id="messages" showDetail="true" /> </h:form>
@Named @RequestScoped public class FileUploadView { private UploadedFile file; private UploadedFiles files; public UploadedFile getFile() { return file; } public void setFile(UploadedFile file) { this.file = file; } public UploadedFiles getFiles() { return files; } public void setFiles(UploadedFiles files) { this.files = files; } public void upload() { if (file != null) { FacesMessage message = new FacesMessage("Successful", file.getFileName() + " is uploaded."); FacesContext.getCurrentInstance().addMessage(null, message); } } public void uploadMultiple() { if (files != null) { for (UploadedFile f : files.getFiles()) { FacesMessage message = new FacesMessage("Successful", f.getFileName() + " is uploaded."); FacesContext.getCurrentInstance().addMessage(null, message); } } } public void handleFileUpload(FileUploadEvent event) { FacesMessage msg = new FacesMessage("Successful", event.getFile().getFileName() + " is uploaded."); FacesContext.getCurrentInstance().addMessage(null, msg); } }