vc pode salvar o upload num arquivo (mesmo que temporário) e pedir file.getFileSize() ou coisa do tipo
Rafael_Guerreiro
Então não dá para ver antes com javascript?
Se eu pegar o tamanho do byte[] eu consigo o tamanho do arquivo, não?
Existe, também, alguma forma de somente aceitar JPGs?
Lucas_Cavalcanti
dá pra usar plugins do jquery de uploads que limitam o tamanho do arquivo
G
garcia-jj
Pelos métodos tradicionais não dá. Isso porque para você saber o tamanho do arquivo precisa enviar para o servidor. E por padrão o Javascript não possui acesso ao filesystem do cliente.
Talvez esses uploaders em Flash possam ter algo que faça isso. A única forma que eu conheço são Applets assinados.
Rafael_Guerreiro
É… Eu só consigo verificar o formato do arquivo…
Agora eu estou com um problema um pouco maior. Quando eu coloco arquivos muito grandes (maior que 1MB) aparece a seguinte exception:
Pelo o que diz na exception é por causa do tamanho do arquivo mesmo. Mas como resolver isso? Sendo que preciso aceitar até 50 MB…
Lucas_Cavalcanti
class not found exception significa geralmente que está faltando algum jar… no caso o do hamcrest (classe org.hamcrest…).
baixe-o no site do projeto ou dentro do zip do vraptor
Rafael_Guerreiro
Qual que é o tamanho padrão do VRaptor? Pois eu acho que parou lá desta vez.
HTTPStatus500-typeExceptionreportmessagedescriptionTheserverencounteredaninternalerror()thatpreventeditfromfulfillingthisrequest.exceptionjava.util.MissingResourceException:Can't find bundle for base name messages, locale pt_BRjava.util.ResourceBundle.throwMissingResourceException(UnknownSource)java.util.ResourceBundle.getBundleImpl(UnknownSource)java.util.ResourceBundle.getBundle(UnknownSource)br.com.caelum.vraptor.validator.Validations.<init>(Validations.java:57)br.com.caelum.vraptor.interceptor.multipart.CommonsUploadMultipartInterceptor$1.<init>(CommonsUploadMultipartInterceptor.java:145)br.com.caelum.vraptor.interceptor.multipart.CommonsUploadMultipartInterceptor.reportSizeLimitExceeded(CommonsUploadMultipartInterceptor.java:145)br.com.caelum.vraptor.interceptor.multipart.CommonsUploadMultipartInterceptor.intercept(CommonsUploadMultipartInterceptor.java:124)br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23)br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)noteThefullstacktraceoftherootcauseisavailableintheApacheTomcat/6.0.29logs.ApacheTomcat/6.0.29
Lucas_Cavalcanti
o tamanho padrão é 2Mb… essa exception tá te pedindo pra criar um arquivo messages.properties no classpath…
Se vc está com a última versão do VRaptor não deveria dar essa exception
Rafael_Guerreiro
Eu estou com a 3.3.1…
Lucas_Cavalcanti
estranho =(
crie um messages.properties vazio na pasta src
Rafael_Guerreiro
Como que eu sobrescrevo o limite máximo padrão?
Rafael_Guerreiro
agora o erro mudou... diz que eu não redirecionei o validator... mas eu estou redirecionando...
HTTPStatus500-typeExceptionreportmessagedescriptionTheserverencounteredaninternalerror()thatpreventeditfromfulfillingthisrequest.exceptionbr.com.caelum.vraptor.InterceptionException:Therearevalidationerrorsandyouforgottospecifywheretogo.Pleaseaddinyourmethodsomethinglike:validator.onErrorUse(page()).of(AnyController.class).anyMethod();oranyviewthatyoulike.Ifyoudidn't add any validation error, it is possible that a conversion error had happened.br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:71)br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:89)br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.interceptor.multipart.CommonsUploadMultipartInterceptor.intercept(CommonsUploadMultipartInterceptor.java:131)br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23)br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)noteThefullstacktraceoftherootcauseisavailableintheApacheTomcat/6.0.29logs.ApacheTomcat/6.0.29
Lucas_Cavalcanti
a validação acontece antes de vc usar o uploadedFile?
vc pode criar uma classe @Component que implementa MultipartConfig e configurar os limites
Rafael_Guerreiro
não, ela acontece depois que eu recebo tudo… Mas o arquivo q eu tento subir é de 4 MB… Então deve estar parando no validator padrão e tentando redirecionar…