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