Fórum Problemas com Upload do Richfaces #386424
15/09/2010
0
estou utilizando o Glassfish 3.0.1 no Debian Lenny para rodar uma aplicação em JSF.
O problema está no upload de arquivos que não está chamando o método, e está jogando os arquivos na pasta /tmp/ do servidor.
O Glassfish está rodando na /opt/
segue o código... se alguém puder dar uma luz eu agradeço.
upload.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<body>
<h:form>
<table align="center">
<tr>
<td>
<rich:fileUpload fileUploadListener="#{classeUpload.listener}"
maxFilesQuantity="5"
addControlLabel="Adicionar"
clearAllControlLabel="Limpar tudo"
clearControlLabel="limpar"
stopEntryControlLabel="Parar"
uploadControlLabel="Enviar"
doneLabel="Arquivo enviado!"
acceptedTypes="zip,doc,docx,xlsx,xls,pdf,ppt,pptx">
<f:facet name="label">
<h:outputText value="KB de KB enviados --- :" />
</f:facet>
</rich:fileUpload>
</td>
</tr>
</table>
</h:form>
</body>
</html>
web.xml
<?xml version="1.0"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlnssi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <description>Facelets StarterKit</description> <display-name>TesteUpload</display-name> <context-param> <param-name>javax.faces.DEFAULT_SUFFIX</param-name> <param-value>.xhtml</param-value> </context-param> <context-param> <param-name>facelets.REFRESH_PERIOD</param-name> <param-value>2</param-value> </context-param> <context-param> <param-name>facelets.DEVELOPMENT</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>javax.faces.STATE_SAVING_METHOD</param-name> <param-value>client</param-value> </context-param> <context-param> <param-name>com.sun.faces.validateXml</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>com.sun.faces.verifyObjects</param-name> <param-value>true</param-value> </context-param> <filter-mapping> <filter-name>richfaces</filter-name> <servlet-name>Faces Servlet</servlet-name> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> <dispatcher>ERROR</dispatcher> </filter-mapping> <filter> <display-name>RichFaces Filter</display-name> <filter-name>richfaces</filter-name> <filter-class>org.ajax4jsf.Filter</filter-class> </filter> <filter> <display-name>Ajax4jsf Filter</display-name> <filter-name>ajax4jsf</filter-name> <filter-class>org.ajax4jsf.Filter</filter-class> <init-param> <param-name>createTempFiles</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>maxRequestSize</param-name> <param-value>20000000</param-value> </init-param> </filter> <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>*.jsf</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsf</welcome-file> </welcome-file-list> <login-config> <auth-method>BASIC</auth-method> </login-config> </web-app>
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?> <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlnsi="http://www.w3.org/2001/XInclude" xmlnssi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"> <managed-bean> <managed-bean-name>classeUpload</managed-bean-name> <managed-bean-class>upload.ClasseUpload</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> <application> <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> </application> </faces-config>
ClasseUpload.java
package upload;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.richfaces.event.UploadEvent;
import org.richfaces.model.UploadItem;
public class ClasseUpload{
public void listener(UploadEvent evento) throws Exception{
UploadItem upload = evento.getUploadItem();
File arquivoUpload = null;
if(upload.isTempFile()){
String string[] = upload.getFileName().split("\\\\");
arquivoUpload = new File("\\home\\storage\\" + string[string.length -1]); // "\\home\\storage\\"
InputStream in = new FileInputStream(upload.getFile());
OutputStream out = new FileOutputStream(arquivoUpload);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}else{
ByteArrayOutputStream b = new ByteArrayOutputStream();
b.write(evento.getUploadItem().getData());
}
}
}
Coop Litoranea
Curtir tópico
+ 0Posts
21/09/2010
Dyego Carmo
Gostei + 0
21/09/2010
Fundação Catarina
Vou verificar as permissões de escrita da pasta "\\home\\storage\\" e depois respondo aqui.
Abraço.
Gostei + 0
21/09/2010
Coop Litoranea
Galera.. foi mal.. eu estava logado com o usuário da universidade.
Se algum administrador tiver a bondade de alterar o post para o meu usuário eu agradeço.
Abraços.
Gostei + 0
27/09/2010
Dyego Carmo
Resolvido ?
ValeuZ !
Gostei + 0
16/02/2011
Coop Litoranea
Obrigado..
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)