Pré-condição: projeto web criado com os frameworks (JSF e Primefaces)
Primeiramente vamos precisar de duas bibliotecas extras, faça o download:
1) Após baixar os arquivos, adicione as depedências ao seu projeto.
2) Configure o arquivo web.xml adicionando o filter do fileUpload.
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class> org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
3) Agora crie um ManagedBean ou utilize um outro qualquer e adicione:
public void fileUploadAction(FileUploadEvent event) {
try {
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
FacesContext aFacesContext = FacesContext.getCurrentInstance();
ServletContext context = (ServletContext) aFacesContext.getExternalContext().getContext();
String realPath = context.getRealPath("/");
// Aqui cria o diretorio caso não exista
File file = new File(realPath + "/fotos/");
file.mkdirs();
byte[] arquivo = event.getFile().getContents();
String caminho = realPath + "/fotos/" + event.getFile().getFileName();
// esse trecho grava o arquivo no diretório
FileOutputStream fos = new FileOutputStream(caminho);
fos.write(arquivo);
fos.close();
} catch (Exception ex) {
System.out.println("Erro no upload de imagem" + ex);
}
}
4) Na página adicione a chamada ao componente de upload do primefaces
<p:fileUpload id="upload" update="foto" fileUploadListener="#{uploadMB.fileUploadAction}" auto="true"/>
Lembrando que é necessário ter declarado o xmlns:p="http://primefaces.prime.com.tr/ui" para usar o primefaces
Agora é só testar.
Para verificar se o arquivo foi salvo corretamente, acesse a pasta build do seu projeto e veja se dentro de web/fotos esta o seu arquivo.






