Problemas com Upload do Richfaces
Rapazeada to precisando de uma ajuda aqui..
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
web.xml
faces-config.xml
ClasseUpload.java
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
Curtidas 0
Respostas
Dyego Carmo
15/09/2010
no h:form adicione o multipart/form-data no parametro do tipo :)
GOSTEI 0
Fundação Catarina
15/09/2010
DYEGO, vou fazer este teste, mas acredito que não funcione, pois esse código funciona perfeitamente em Windows.. caso eu altere o local "\\home\\storage\\" para "C:\\arquivos\\" e rode no sistema da Microsoft ele salva corretamente, mas no Debian não salva.. fica apenas na /tmp/.
Vou verificar as permissões de escrita da pasta "\\home\\storage\\" e depois respondo aqui.
Abraço.
Vou verificar as permissões de escrita da pasta "\\home\\storage\\" e depois respondo aqui.
Abraço.
GOSTEI 0
Coop Litoranea
15/09/2010
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
Dyego Carmo
15/09/2010
Opa !
Resolvido ?
ValeuZ !
Resolvido ?
ValeuZ !
GOSTEI 0
Coop Litoranea
15/09/2010
Muito tempo depois... acabei não mexendo mais naquilo ali.. mas caso eu volte vou publicar aqui..
Obrigado..
Obrigado..
GOSTEI 0