fileUpload

9 respostas
R

boa tarde estou tentando criar um upload de arquivos num projeto que estou fazendo da faculdade
to usando o hibernate 2.0 , primefaces 2.2.1
coloquei tbm o jar (commons-fileupload-1.2.2 e commons-io-2.0.1)
aew a minha tela (.xhtml) o icone ta assim:

o meu backbean ta assim

public void criaArquivo(byte[] bytes, String arquivo) {

FileOutputStream fos;

try {

fos = new FileOutputStream(arquivo);

fos.write(bytes);

fos.close();

} catch (FileNotFoundException ex) {

System.out.println("erro " + ex.getMessage());

} catch (IOException ex) {

System.out.println("erro " + ex.getMessage());

}

}
public void enviarImagem(FileUploadEvent event) {
      byte[] img = event.getFile().getContents();
      imagemTemporaria = event.getFile().getFileName();
      FacesContext facesContext = FacesContext.getCurrentInstance();
      ServletContext scontext = (ServletContext) facesContext.getExternalContext().getContext();
      String arquivo = scontext.getRealPath("/upload/" + imagemTemporaria);
      criaArquivo(img, arquivo);
     
}

e o meu web.xml ta assim(nesse parte é que ta a grande bronca pq nao to sabendo colocar a parte de baixo com a parte de cima que era
a que ja estava no projeto)

<?xml version="1.0" encoding="UTF-8"?> javax.faces.PROJECT_STAGE Development Controle de acesso FiltroRunCase br.com.runcase.web.FiltroRunCase FiltroRunCase *.xhtml REQUEST FORWARD 15 faces/paginaPrincipal.xhtml
-------------------------------------------------------------------------------------------

essa parte aqui pelo que pesquisei tem que ta no web.xml para poder funcionar o upload

<servlet> 
        <servlet-name>Faces Servlet</servlet-name> 
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
        <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
        <servlet-name>Faces Servlet</servlet-name> 
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
     <filter> 
        <filter-name>PrimeFaces FileUpload Filter</filter-name> 
        <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class> 
    </filter> 
    <filter-mapping> 
        <filter-name>PrimeFaces FileUpload Filter</filter-name> 
        <servlet-name>Faces Servlet</servlet-name> 
    </filter-mapping>

será que vocês podem me ajudar?

9 Respostas

R

ninguem ???
=/

aprendizweb
Como assim vc não consegue colocar a parte de baixo com a parte de cima? considero que basta adicionar as configurações do fileupload e pronto.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID"
    version="3.0"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" >

<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>

<filter>
<description>Controle de acesso</description>
<filter-name>FiltroRunCase</filter-name>
<filter-class>br.com.runcase.web.FiltroRunCase</filter-class>
</filter>

<filter-mapping>
<filter-name>FiltroRunCase</filter-name>
<url-pattern>*.xhtml</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>

<session-config>
<session-timeout>15</session-timeout>
</session-config>

<welcome-file-list>
<welcome-file>faces/paginaPrincipal.xhtml</welcome-file>
</welcome-file-list> 

<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

<filter>
	<filter-name>PrimeFaces FileUpload Filter</filter-name>
	<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>PrimeFaces FileUpload Filter</filter-name>
	<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

</web-app>
R

Obrigado pela resposta.

Mas se eu tirar as configuracoes q ja estavam, num quebra o codigo nao?

aprendizweb

Bom, eu não falei para vc tirar as configurações existentes, e sim para adiconar as configurações de upload do PrimeFaces no final de seu web.xml.

R

Se eu deixar da maneira q esta da erro de web.xml na construcao do projeto posso ter duas tegs com o mesmo nome tem dois

R

aprendizweb

ja fiz de tudo nesse web.xml
troquei as posições das tags , coloquei td na mesma tag e nada
=/
teve uma hora que ele ate chegou a rodar porem é como se ele nao tivesse encontrado a tela de inicialização
que declarei no web.xml

tem ideia do que possa fazer?

tectuba

Amigo,

Você precisa das seguintes configurações no seu web.xml

<filter>
		<filter-name>PrimeFaces FileUpload Filter</filter-name>
		<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
		<init-param>
			<param-name>uploadDirectory</param-name>
			<param-value>/tmp</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>PrimeFaces FileUpload Filter</filter-name>
		<servlet-name>Faces Servlet</servlet-name>
	</filter-mapping>

	<!-- JSF mapping -->
	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	
	<!-- Map these files with JSF -->
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.xhtml</url-pattern>
	</servlet-mapping>

Você não precisa usar o listner para capturar, use o seguinte no seu controller:

private UploadedFile uploadedFile;

public void setUploadedFile(UploadedFile uploadedFile) {
		this.uploadedFile = uploadedFile;
	}

e a sua view:

<p:fileUpload value="#{uploadView.uploadedFile}" mode="simple" />

PS: Precisa estar em um form

Abraço

R

tectuba obrigado pela resposta.

o problema é que meu web.xml nao pode apenas ter essas configurações do upload
precisa tbm ter as que ja se encontram nele como eu postei acima
e quando junto as duas configurações ele nao constroi o projeto

queres que te mande o link do meu projeto?
postei ele no 4shared

tectuba

Ola amigo

Manda sim, ai dou olhada e te respondo.

Criado 18 de novembro de 2012
Ultima resposta 24 de nov. de 2012
Respostas 9
Participantes 3