[RESOLVIDO] PrimeFaces fileUpload

7 respostas
F

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!!

7 Respostas

getAdicted

Boa tarde,

Voce utiliza Eclipse ou NetBeans?

[]'s

F

Eclipse!

getAdicted

Então ficará +- assim,

Parte responsavel pelo upload do arquivo:

// 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();

	}
<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:
// 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");
	}
}
<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

F

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

getAdicted

Legal,

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

[]'s

F

thanks!!

G

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

Criado 27 de dezembro de 2011
Ultima resposta 29 de dez. de 2011
Respostas 7
Participantes 4