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
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!
Legal,
Se a sua duvida foi sanada, edita, por favor, o assunto do seu primeiro post e add a tag [RESOLVIDO]. =)
[]'s
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