[RESOLVIDO] PrimeFaces fileUpload

Boa tarde!

Sou nova no desenvolvimento com java e estou tendo uma grande dificuldade para trabalhar com os arquivos anexados através do componente fileUpload, do PrimeFaces.
Gostaria de saber como posso armazená-los bem como identificar seus tipos, já que na tela em que estou trabalhando qualquer tipo de arquivo pode ser anexado e não há uma quantidade limite de arquivos à serem enviados. Estou usando PrimeFaces 3.0.
Já pesquisei muuito no próprio GUJ e em outros fóruns, no entanto só encontro soluções para uploads individuais que normalmente são imagens… estou sem nem idéia de como fazer a implementação… como li em alguns foruns, pensei em armazenar inicialmente em Listas de UploadedFiles, no entanto, de acordo com a especificação que tenho, os arquivos tem que ser inicialmente armazenados em listas de bytes… ai fiquei mais perdida ainda…
Poderiam me ajudar?

Obrigada!!

Boa tarde,

Voce utiliza Eclipse ou NetBeans?

[]'s

Eclipse!

Então ficará ± assim,

Parte responsavel pelo upload do arquivo:

[code]// Metodo responsavel pelo upload do arquivo
public void carregarArquivo(FileUploadEvent event)
throws FileNotFoundException, IOException {

	FacesMessage msg = new FacesMessage("Sucesso", event.getFile()
			.getFileName() + " foi carregado.");
	FacesContext.getCurrentInstance().addMessage("teste", msg);

	String caminho = FacesContext.getCurrentInstance().getExternalContext()
			.getRealPath("" + "\\fotos\\" + event.getFile().getFileName());

	byte[] conteudo = event.getFile().getContents();
	FileOutputStream fos = new FileOutputStream(caminho);
	fos.write(conteudo);
	fos.close();

}[/code]

<p:fileUpload label="#{msgs.procurar}" fileUploadListener="#{seuBean.carregarArquivo}" mode="advanced" update="messages" auto="true" sizeLimit="1000000" allowTypes="png,gif,jpg" required="true" id="caminho" ><p:message for="caminho" /> </p:fileUpload>

Parte responsavel pelo download do arquivo:

[code]// Metodo responsavel pelo download do arquivo
public class SeuBean implements Serializable {
private StreamedContent file;

      public void setFile(StreamedContent file) {
	this.file = file;
}
public StreamedContent getFile() throws FileNotFoundException {
	String caminho = FacesContext.getCurrentInstance().getExternalContext()
			.getRealPath("" + "\\fotos\\" + "nomeDoArquivo");
	FileInputStream stream = new FileInputStream(caminho);
	return file = new DefaultStreamedContent(stream, caminho,
			"nomeDoArquivo");
}

}
[/code]

<p:commandButton image="ui-icon-save" title="Download" ajax="false"> <p:fileDownload value="#{seuBean.file}" /> </p:commandButton>
Veja se ajuda, qualquer dúvida, avisa!

[]'s

com algumas alterações consegui adaptar ao meu contexto… obrigada! :slight_smile:

Legal,

Se a sua duvida foi sanada, edita, por favor, o assunto do seu primeiro post e add a tag [RESOLVIDO]. =)

[]'s

thanks!!

Ola Amigos,
Ressusitando este post.

Segui a rotina deste post e funcionou direitinho.

tem um porém !!!

Quando faz o upload o prime cria diversos arquivos temp na pasta de destino. Tem como não criar esses arquivos ou apaga-los ?

Obrigado pela atenção