Upload de arquivos - resolvido

No endpoint está retornando este erro:

  1. detail: “Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: io.undertow.server.handlers.form.MultiPartParserDefinition$FileTooLargeException: UT000054: The maximum size 1048576 for an individual file in a multipart request was exceeded”

No yml está assim:

spring:
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB

O arquivo é de 5MB.

O sistema está dentro do portainer - https://www.portainer.io/

Tenho que fazer mais alguma configuração ?

Se não me engano essa configuração é para o spring com versão < 2, para versões > 2 acho que é nesse formato aqui:

spring:
  http:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB

Muda de servlet para http, faça um teste no seu ambiente aí!

1 curtida

Já retorno.

grato

Não funcionou. Mesmo erro.

  1. detail: “Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: io.undertow.server.handlers.form.MultiPartParserDefinition$FileTooLargeException: UT000054: The maximum size 1048576 for an individual file in a multipart request was exceeded”

Utilizo jhipster

Muito estranho, parece que ele não compreende a configuração! :confused:

Nunca utilizei o jhipster, sempre utilizei o spring initializr.

Esse jhipster trás algum tipo de benefício?

Pois é

jhipster - Ele ajudou em varias configurações, segurança, usuarios, configuração entre outras coisas …

Tava pesquisando, parece que a galera cria um bean para jogar essas confgurações de multipart.

@Configuration
public class UndertowConfiguration {

    @Value("${spring.http.multipart.max-file-size:10}")
    private long maxFileSize;

    @Bean(name = "multipartResolver")
    public MultipartResolver multipartResolver() {
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
        multipartResolver.setDefaultEncoding("utf-8");
        multipartResolver.setResolveLazily(true);
        multipartResolver.setMaxUploadSize(1024*1024*maxFileSize);
        multipartResolver.setMaxUploadSizePerFile(1024*1024*maxFileSize);
        return multipartResolver;
    }
}
1 curtida

Vou testar

Nada viu.

Cria um projeto com o Spring initializr, implementa o upload de arquivos basicão e faz um teste, se funcionar corretamente o problema é com o jhipster.

1 curtida

Entendi. Mas eu acho que o problema é com ele mesmo. Mas tenho que tentar resolver com ele. Valeu
Reconstruir todo o projeto, não dá

A ideia que disse nem é reconstruir o projeto todo, somente fazer um teste mesmo!

Qualquer coisa habilita o nível de log’s DEBUG e veja se ele apresenta alguma informação relevante quando você tenta fazer o upload do arquivo.

1 curtida

A tá. Mas eu sei que funciona. Já fiz o teste. Só com o spring boot.

Qualquer coisa habilita o nível de log’s DEBUG e veja se ele apresenta alguma informação relevante quando você tenta fazer o upload do arquivo.

Nada alem disso:

detail: “Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: io.undertow.server.handlers.form.MultiPartParserDefinition$FileTooLargeException: UT000054: The maximum size 1048576 for an individual file in a multipart request was exceeded”

O problema que local não dá este erro, pelo menos até o momento.

Não sei se é algo no portainer, também.

Tu está usando o embedded tomcat ou alterou para algum outro?

1 curtida

embedded

Tenta fazer a seguinte configuração e faz um teste:

@Configuration
public class ServletContainerCustomizerConfig {
      @Bean 
	  public EmbeddedServletContainerCustomizer containerCustomizer() throws Exception {
	      
	      return (ConfigurableEmbeddedServletContainer container) -> {
	 
	          if (container instanceof TomcatEmbeddedServletContainerFactory) {
	 
	              TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;
	              tomcat.addConnectorCustomizers(
	                      (connector) -> {
	                    	  connector.setMaxPostSize(10000000); //10MB
	                      }
	              );
	          }
	      };
	  }
}
1 curtida

Mas ele está usando o undertow e não o tomcat como servlet container (bom, pelo menos foi o que entendi)

1 curtida

Falha minha, agora que observei o undertown no log, penssei que fosse o tomcat pq eu havia perguntado e ele confirmou.

1 curtida

Foi mal. Achei que era

@guilhermebhte, talvez tu possa testar com o código do @Jonathan_Medeiros, mas usando a classe UndertowEmbeddedServletContainerFactory no lugar.