[RESOLVIDO] Problema com Upload do Richfaces em Produção!

5 respostas
DirceuSobrinho

Olá

implementei o upload de uma aplicação que ja está em produção utilizando o Richfaces, localmente e no servidor de testes, tudo funciona ok, pois está na mesma rede e upload é super-Rapido!

no entanto, em produção, o upload algumas vezes funciona, outras vezes não.

Quando nao funciona o fileupload do Richfaces informa ao usuário q o arquivos foi upado com sucesso, no entanto a arquivo não é salvo no sistema de arquivos.

  • Acredito que seja algo relacionado ao tempo de upload pois quando o upload é rapido funciona tudo ok, no entato upload um pouco demorado não salva a imagem. localmente como é rápido fiz upload de imagens grandes e não deu erro, usando a mesma imagem na produção, a imagem não foi salva!

Alguem faz ideia do que está acontecendo:

Meu Código de Upload:

public void upload(UploadEvent event){
            UploadItem item = event.getUploadItem();
	    ImagemUtils imgUtils = new ImagemUtils();
		try{
			 //checar se é um arquivo temporário
			 //e copiar o arquivo
			 if (item.isFile()) {
				File file = item.getFile();
				pathImagem = imgUtils.armazenarImagem(file,imagem.toString());
			 //caso nao seja, salvar no disco 
			 }else {
				ByteArrayOutputStream b = new ByteArrayOutputStream();
				pathImagem = imgUtils.armazenarImagem(b,item.getData(),imagem.toString());
			 }
		}catch (Exception e) {
			e.printStackTrace();
		}
	}

Quando o arquivo demora bastante para ser upado acho nem é executado o conteudo deste método acima, pois não dispara nenhuma exceção!

Método que armazena Imagem no sistema de arquivos:

public String armazenarImagem(ByteArrayOutputStream b,byte[] data, String imagemName) throws Exception{
		
			b.write(data);
			File file = new File(project_home+"//arquivos//"+imagemName);
			b.writeTo(new FileOutputStream(file));
			
		return project_home+"//arquivos//"+imagemName;
	}

OBS.: Nenhuma exceção é disparada qdo o upload não é efetuado.

codigo da página .xhtml

<r:fileUpload fileUploadListener="#{anuncioBean.upload}" 
								addControlLabel="Enviar" clearAllControlLabel="Limpar Todos" clearControlLabel="Limpar" maxFilesQuantity="6" reRender="table2" id="upload" immediateUpload="true" acceptedTypes="jpg, gif, jpeg"
								>
								<a4j:support event="onuploadcomplete" reRender="table2" ajaxSingle="true"/>
					</r:fileUpload>

Filtro do richfaces no WEB.XML

<filter>
    <display-name>RichFaces Filter</display-name>
    <filter-name>richfaces</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>550000</param-value>  
         </init-param> 
  </filter>

Att. Dirceu

5 Respostas

DirceuSobrinho

Razão do Problema:

Filtro ISAPI que roda no IIS para redirecionar para o Tomcat, fazia upload de arquivos maiores de 50kb não funcionassem!

Solução:

Estava usando o ISAPI - JK2
Passei a usar o JK 1.2.26 -> Upload nessa versão funciona normalmente!

Problema que persiste:
Progress Bar não funciona quando utilizado o filtro ISAPI
Ex.:
quando acesso: www.site.com.br/ -> progress bar não funciona
se adiciono na url 8080: www.site.com.br:8080/ -> progress bar funciona

M

Obrigado por ter mantido o tópico com a solução :smiley: me ajudou

A

Olá amigo,

Poderia enviar a classe ImagemUtils?

Grato.

Flavio_machine

Boa noite tem como enviar o código do upload pra mim.

valeu.

[email removido]

M

Estamos em um fórum, se tiver de enviar algo a alguém que poste para a comunidade.
:wink:

Criado 18 de agosto de 2008
Ultima resposta 9 de jun. de 2011
Respostas 5
Participantes 5