Boa tarde,
Alguém ai tem um exemplo funcionando, utilizando o componente FileUplad com o jar(3.0M3) Primefaces e gravando em disco ?
tentei inumeros links, alguns com inserção de filtro no web.xml mas não deu certo.
Boa tarde,
Alguém ai tem um exemplo funcionando, utilizando o componente FileUplad com o jar(3.0M3) Primefaces e gravando em disco ?
tentei inumeros links, alguns com inserção de filtro no web.xml mas não deu certo.
Alguem ?
Estou tentando seguir e exemplo
http://www.primefaces.org/showcase-labs/ui/fileUploadSimple.jsf
Na classe FileUploadController no método upload é onde vou definir o local (fisico, ou a pasta que esta no meu projeto ou n pasta que esta na maquina)?
Caso sim, como faço ?
Boa tarde alexandergtk,
Segue um exemplo, feito em JSF+Primefaces, em que o arquivo eh gravado no caminho relativo WebContent/fotos:
Controller:
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();
}
View:
<p:fileUpload label="Procurar"
fileUploadListener="#{classeUtil.carregarArquivo}"
mode="advanced" update="messages" auto="true" sizeLimit="1000000"
allowTypes="png,gif,jpg" required="true" id="idcomponent"
<p:message for="idcomponent" />
</p:fileUpload>
Qualquer coisa, avisa!
[]'s
Então, nesse caso vc tá carregando o arquivo ou salvando ?
Esse é o exemplo que tá no Primefaces.
Classe FileUploadController
package org.primefaces.examples.view;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.primefaces.model.UploadedFile;
public class FileUploadController {
private UploadedFile file;
public UploadedFile getFile() {
return file;
}
public void setFile(UploadedFile file) {
this.file = file;
}
public void upload() {
/*Essa é o método onde eu defino onde vou armazenar meu arquivo ? Como eu faria isso ? */
FacesMessage msg = new FacesMessage("Succesful", file.getFileName() + " is uploaded.");
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}
Arquivo XML
<h:form enctype="multipart/form-data">
<p:messages showDetail="true"/>
<p:fileUpload value="#{fileUploadController.file}" mode="simple"/>
<p:commandButton value="Submit" ajax="false"
actionListener="#{fileUploadController.upload}"/>
</h:form>
Opa,
As duas coisas.
Nesse trecho, caso o caminho exista, a classe FileOutputSream o utiliza, caso contrário, ela o cria:
FileOutputStream fos = new FileOutputStream(caminho);
fos.write(conteudo);
Seu arquivo xhtml(e não xml) está errado!
[EDIT]Desculpe, não estah errado, não estah adequado à maneira que eu implementei a classe.[/EDIT]
Usa essa classe:
@ManagedBean
public class classeUtil{
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();
}
}
xhtml:
<p:fileUpload label="Procurar"
fileUploadListener="#{classeUtil.carregarArquivo}"
mode="advanced" update="messages" auto="true" sizeLimit="1000000"
allowTypes="png,gif,jpg" required="true" id="idcomponent"
><p:message for="idcomponent" />
</p:fileUpload>
Veja se dah algum erro.
[]'s
Desculpe o erro, troquei XHMTL por XML ehehehhe
fiz da forma que me passou, mas onde defino que o caminho aponta para a minha pasta dentro do meu projeto.
Printei a tela e anexei caso queira dar uma olhada.
To apanhando do NetBeans aqui mas tah saindo, hehe
Eh Glassfish ai?
Dah um print no caminho para saber onde ele estah salvando. Aqui, eu utilizo eclipse, o que muda esse aspecto.
heheheh…tranquilo, então não to usando conta container não, estou apenas utilizando a casca e tentando entender como direciono lá.
um exemplo eu precisa apenas testar o acesso a pasta, então o que eu fiz eu usei o componente abaixo
<p:graphicImage id=“campnou” value="./imagem/teste.jpg"/>
dessa forma mostra a imagem, mas só foi teste mesmo
(O teste eu inseri manualmente a imagem, só pra ver se buscava dento da pasta a imagem que eu queria.)
O que estou buscando entender é como eu salvo dentro dessa pasta utilizando o componente FileUpload, eu criei a pasta IMAGEM dentro de pasta de WEB, então preciso jogas a imagem do upload tbm para essa mesma pasta.
i ae galera…
to treinando JSF + Primefaces num programinha aqui e preciso inserir uma imagem em um Paciente…
usei o que foi postado só que precisei fazer umas modificações, pra condizer com o q eu preciso:
xhtml:
<h:form id="formAnexarExames">
<p:panel header="Anexar exame a um paciente">
<h:panelGrid columns="2">
<h:outputLabel value="Paciente:* " for="paciente"/>
<p:selectOneMenu value="#{beanConsulta.idPaciente}" style="width: 300px" required="true" requiredMessage="Preencha o campo Paciente!">
<f:selectItem itemLabel="Selecione " itemValue=""/>
<f:selectItems value="#{beanPaciente.pacientes}" var="p" itemValue="#{p.id}" itemLabel="#{p.nome}"/>
</p:selectOneMenu>
<p:fileUpload label="Procurar"
fileUploadListener="#{beanExame.carregarArquivo}"
mode="advanced" update="messages" auto="true" sizeLimit="1000000"
allowTypes="png,gif,jpg" required="true" id="idcomponent">
<p:message for="idcomponent" />
</p:fileUpload>
</h:panelGrid>
</p:panel>
</h:form>
e o método no MB:
public void carregarArquivo(FileUploadEvent event) throws Exception {
String nomeArquivo = event.getFile().getFileName();
String caminho = FacesContext.getCurrentInstance().getExternalContext().getRealPath("" + "\\filesUploaded\\" + nomeArquivo);
addPaciente();
anexo.setDataAnexo(new Date());
anexo.setEndAnexo(nomeArquivo);
DaoExame.merge(anexo);
anexo = new CPExame();
byte[] conteudo = event.getFile().getContents();
FileOutputStream fos = new FileOutputStream(caminho);
fos.write(conteudo);
fos.close();
FacesMessage msg = new FacesMessage("Sucesso", nomeArquivo + " foi carregado.");
FacesContext.getCurrentInstance().addMessage("teste", msg);
}
tentei fazer assim, mas após selecionar o paciente e a imagem, clico em upload e não acontece nada…
alguém pode me ajudar?