Vraptor 2 - Aumentar tamanho do Upload

Gostaria de saber onde configuro para aumentar o tamanho do arquivo para upload. Hoje o tamanho máximo é de 2MB.
Li toda documentação e a unica coisa que achei, que pode ser configurada, mas não falam onde.

“Note: The upload file size is automatically limited to 2.000.000 bytes by VRaptor (and will be configurable in the feature).”

Estou usando o Vraptor 2.6.0

Grato,

Luiz Atayde

A mensagem está dizendo que o tamanho é fixo e que em versões futuras se terá a opção de customizar o tamanho. É assim que eu a entendo.

[quote=RogerGales]A mensagem está dizendo que o tamanho é fixo e que em versões futuras se terá a opção de customizar o tamanho. É assim que eu a entendo.
[/quote]

OK. E tem uma versão futura, que faça isso? Sem ser a versão 3?
Não tem como alterar este parâmetro?

Isso eu não sei te responder, sou iniciante no VRaptor.

Mas pelo que entendi, lendo novamente o NOTE, tem como configurar esta opção. Não seria apenas na futura versão.
Vamos aguardar.
Valeu.

Para aumentar o tamanho é só fazer um component:

@Component
@ApplicationScoped
public class CustomMultipartConfig extends DefaultMultipartConfig {
	public long getSizeLimit() {
		return 204800;
	}
}

Multiplique o tamanho que vc quer por 1024, eu queria no máximo em 200KB ai ficou 204800.
Abraço!

Reparei que vc está usando versão antiga, ai já não sei se vai funcionar.

Imaginei. Pois não encontrei a classe ou interfase DefaultMultipartConfig.
Valeu!!!

[quote=Guevara]Para aumentar o tamanho é só fazer um component:

@Component
@ApplicationScoped
public class CustomMultipartConfig extends DefaultMultipartConfig {
	public long getSizeLimit() {
		return 204800;
	}
}

Multiplique o tamanho que vc quer por 1024, eu queria no máximo em 200KB ai ficou 204800.
Abraço!

Reparei que vc está usando versão antiga, ai já não sei se vai funcionar. [/quote]

não tenho certeza, mas tem algo a ver com o vraptor.xml…

algum motivo especial pra não usar o VRaptor 3?

Sim. Já estou com o sistema todo completo e só preciso mudar o caso de uso para fazer upload de arquivos acima de 2mb.
Será que não tem uma solução para este problema? Quem poderia me falar sobre este vraptor.xml?
Valeu

[quote=Lucas Cavalcanti]não tenho certeza, mas tem algo a ver com o vraptor.xml…

algum motivo especial pra não usar o VRaptor 3?[/quote]

tenta procurar aqui:
http://vraptor.caelum.com.br/vraptor2/

Já procurei tudo. Só encontrei o NOTE, falando que poder ser configurado. E o http://vraptor.caelum.com.br/vraptor2/vraptor-xml.html não fala nada!!!
Não sei mais o que fazer.

[quote=Lucas Cavalcanti]tenta procurar aqui:
http://vraptor.caelum.com.br/vraptor2/[/quote]

O problema é que esse limite esta fixo na classe MultipartRequestInterceptor, o valor é setado no construtor da classe.

Voce pode tentar criar uma nova classe com a mesma logica e use uma outra forma de setar esse limite, apos isso declare essa classe no seu logic (ela é um interceptor).
detalhe: não sei se o upload irá funcionar, pois não conheco a fundo como framework trata essa questao do upload.

Boa sorte

solução:

adiciona esta classe ao seu projeto: => SizableMultipartRequestInterceptor

Observação… Configuration.getInstance(), no meu projeto retorna uma instancia singleton do objeto Configuuration … esse objeto lê suas propriedades de um .properties

no meu properties esta definido o size limit, que então passo para a instnacia do interceptor…

se você quizer, você pode alterar direto o valor, mas ai neste caso, sempre que precisar aumentar o valor, vai ter que recompilar, é por isso que prefiro um .properties.

a outra modificação que você terá que fazer é trocar

@InterceptBy(MultipartRequestInterceptor.class)
por
@InterceptBy(SizableMultipartRequestInterceptor.class)

“Note: The upload file size is automatically limited to 2.000.000 bytes by VRaptor (and will be configurable in the feature).”

[quote=RogerGales]A mensagem está dizendo que o tamanho é fixo e que em versões futuras se terá a opção de customizar o tamanho. É assim que eu a entendo.
[/quote]

só uma coisa: feature, nada tem a ver com futuro (future) !

[quote=Lavieri]solução

http://pastebin.com/EGSdEYgf

Observação… Configuration.getInstance(), no meu projeto retorna uma instancia singleton do objeto Configuuration … esse objeto lê suas propriedades de um .properties

no meu properties esta definido o size limit, que então passo para a instnacia do interceptor…

se você quizer, você pode alterar direto o valor, mas ai neste caso, sempre que precisar aumentar o valor, vai ter que recompilar, é por isso que prefiro um .properties.

a outra modificação que você terá que fazer é trocar

@InterceptBy(MultipartRequestInterceptor.class)
por
@InterceptBy(SizableMultipartRequestInterceptor.class)[/quote]

Essa é a implementação da idéia que comentei no post anterior =D

Entao funciona. :lol:

[quote=renanpto]Essa é a implementação da idéia que comentei no post anterior =D

Entao funciona. :lol: [/quote]

sim, funciona, é assim que tem q fazer para corrigir o problema…

Lavieri,

Obrigado pela ajuda. Estou ficando louco com isso, pois está atrasando a entrega do projeto.

Fiz a opção de criar a classe SizableMultipartRequestInterceptor. Mas ela está dando pau na compilação.
Será que tem outra versão mais nova do vraptor, que resolva os problemas? Estou usando a 2.6.0

Os erros de compilação da classe SizableMultipartRequestInterceptor, são:

  • O método ‘public MultipartRequestInterceptor()’ declaração invalida, não retorna nada. Acredito que seja void.
  • Não pode acessar temporaryDirectory e sizeLimit. Acredito que eles não podem ser final.
  • Não é possível encontrar o método: Configuration.getInstance()

E se eu quiser alterar o valor diretamente, teria que ter o código fonte do vraptor, certo? Onde conseguiria ou teria que pedir para alguém gerar?
Se for possível, já coloca 64MB.

Valeu!!!

[quote=Lavieri]solução:

adiciona esta classe ao seu projeto: => SizableMultipartRequestInterceptor

Observação… Configuration.getInstance(), no meu projeto retorna uma instancia singleton do objeto Configuuration … esse objeto lê suas propriedades de um .properties

no meu properties esta definido o size limit, que então passo para a instnacia do interceptor…

se você quizer, você pode alterar direto o valor, mas ai neste caso, sempre que precisar aumentar o valor, vai ter que recompilar, é por isso que prefiro um .properties.

a outra modificação que você terá que fazer é trocar

@InterceptBy(MultipartRequestInterceptor.class)
por
@InterceptBy(SizableMultipartRequestInterceptor.class)[/quote]

Se o projeto não for grande não rola fazer uma migração pro VRaptor 3? Ia pegar outros recursos bem legais:
http://vraptor.caelum.com.br/documentacao/migrando-do-vraptor2-para-o-vraptor3/

Pensei nisso, mas o projeto é grande, com 1 ano de desenvolvimento. Foi entregue e só deu problema nesta questão de upload.
Não seria viável e nem poderia gastar mais homens/horas para esta migração.

É só este bug que tenho que corrigir!!!

[quote=Guevara]Se o projeto não for grande não rola fazer uma migração pro VRaptor 3? Ia pegar outros recursos bem legais:
http://vraptor.caelum.com.br/documentacao/migrando-do-vraptor2-para-o-vraptor3/[/quote]

esse é o construtor, troque pra public SizableMultipartRequestInterceptor

tire o final

ou crie o configuration, ou troque os usos dessas classes por valores fixos