Upload Files JSF

7 respostas
J

Bom dia pessoal, gostaria de algumas dicas, a respeito de UPLOAD de arquivos para o servidor, estou trabalhando com JSF
e preciso criar uma ficha de inscrição, no qual o usuário que está se cadastrando envie um arquivo para o servidor, através
do formulario.
Qual a maneira de fazer isso? Existe algo pronto, ou é necessário implementar?

Obs: Os arquivos podem ser VIDEOS, PDF, DOC.
Obrigado.

7 Respostas

E

use o FileUpload do primeFaces

otaviojava

òtima sugestão,
qualquer dúvida use o showcase do prime
Link: http://www.primefaces.org/showcase/ui/fileUploadSingle.jsf

J

Bom, estou tentando usa-lo, estou com o seguinte problema para imports dessa linha:

private Logger logger = LoggerFactory.getLogger(FileUploadController.class);

quando eu coloco os import que não ocorrem erros , o netbeans não consegue executar o codigo, alguem poderia verificar isso para mim?
obrigado.

J

O erro que ocorre é esse:

Iniciando GlassFish Server 3
GlassFish Server 3 está em execução.
Deployment localizado em C:\Users\User\Documents\NetBeansProjects\FileUploadJSF\build\web
Initializing...
deploy?path=C:\Users\User\Documents\NetBeansProjects\FileUploadJSF\build\web&name=FileUploadJSF&force=true falhou em GlassFish Server 3
C:\Users\User\Documents\NetBeansProjects\FileUploadJSF\nbproject\build-impl.xml:686: O módulo não foi implementado.
FALHA NA CONSTRUÇÃO (tempo total: 35 segundos)
J

Pessoal consegui sanar meu problema…
Agora tenho uma duvida:
Onde coloco o caminho onde esse arquivo será salvo:
Eis o código do FileUploaderJSF:

public void handleFileUpload(FileUploadEvent event) {
        logger.log(Level.INFO, "Uploaded: {0}", event.getFile().getFileName());

        FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");
        FacesContext.getCurrentInstance().addMessage(null, msg);
    }
E

Aonde você quiser, vc decide a pasta aonde será salva

1-) Crie um File aonde vc vai colocar o arquivo.
2-) Pegue o inputStrean e salva na pasta criada

Ex:

public void upload(FileUploadEvent event) {
        UploadedFile uf = event.getFile();
        String nomeArquivo = uf.getFileName();
        File f = new File("C:\\Documents and Settings\\erick.macedo\\Meus documentos\\" + nomeArquivo);
        OutputStream os = null;
        InputStream is = null;
        try {
            is = uf.getInputstream();
            byte[] b = new byte[is.available()];
            os = new FileOutputStream(f);
            while (is.read(b) > 0) {
                os.write(b);
            }
            
            FacesMessage msg = new FacesMessage("Upload realizado com Sucesso!", event.getFile().getFileName());
            FacesContext.getCurrentInstance().addMessage(null, msg);
        } catch (IOException ex) {
            Logger.getLogger(MbUpload.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                os.flush();
                os.close();
                is.close();
            } catch (IOException ex) {
                Logger.getLogger(MbUpload.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
      }
sammers21

Amigo normalmente eu uso o Seam segue em exemplo ai abaixo.

<s:fileUpload  id="anexo" accept="image/jpg,image/jpeg,application/pdf"  fileSize="#{anexosAction.fileSize}"  data="#{anexosAction.file}" fileName="#{anexosAction.fileName}" alt="Endereço do arquivo no computador" title="Endereço do arquivo no computador"/>

Segue alguns fragmentos do codigo da action necessário para a inclusão

private Integer fileSize;
	
	private String fileName;
	
	private byte[] file;
	
	private String descricao;

	
	public void incluirAnexo(){
		if (this.validarAnexo()){
			AnexoTransacaoComplemento anexoTransacao = new AnexoTransacaoComplemento();
			anexoTransacao.setArquivo(file);
			anexoTransacao.setNomeArquivo(fileName);
			anexoTransacao.setTipoArquivo(tipoArquivo);
			anexoTransacao.setDescricao(descricao);
			anexoTransacao.setTipoAnexoTransacao(TipoAnexoTransacao.A);
			anexoTransacao.setSituacaoRegistroPublico(SituacaoRegistroPublico.NAO);
			anexoTransacao.setSituacaoRegistro(SituacaoRegistro.ATIVO);
			anexoTransacao.setTipoAnexo(tipoAnexo);
			anexoTransacao.setDataEnvio(Calendar.getInstance().getTime());
			transacaoCorrente.getAnexos().add(anexoTransacao);
			anexoTransacao.setTransacao(transacaoCorrente);
			resetValues();
		}
	}
	
	
	private void resetValues(){
		file = null;
		fileName = null;
		tipoAnexo = null;
		descricao = null;
		fileName = null;	
	}

espero ter ajudado.

Criado 25 de abril de 2011
Ultima resposta 25 de abr. de 2011
Respostas 7
Participantes 4