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.
use o FileUpload do primeFaces
òtima sugestão,
qualquer dúvida use o showcase do prime
Link: http://www.primefaces.org/showcase/ui/fileUploadSingle.jsf
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.
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)
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);
}
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);
}
}
}
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
[code]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;
}[/code]
espero ter ajudado.