Augmenter la taille de HTTP Post maxPostSize dans la botte de printemps

j'ai une application Web de démarrage de printemps assez simple, j'ai une page HTML unique avec un formulaire avec enctype="multipart/form-data". Je reçois cette erreur:

la requête multi-parties contenait des données paramétriques (à l'exclusion des fichiers téléchargés) qui dépassaient la limite de maxPostSize fixée sur le connecteur associé.

j'utilise le serveur tomcat intégré par défaut de Spring Boot. Apparemment, la valeur par défaut maxPostSize la valeur est de 2 mégaoctets. Est-il possible de modifier cette valeur? Faire par application.properties serait préférable, plutôt que d'avoir à créer des fèves personnalisées ou des fichiers xml.

26
demandé sur Mosam Mehta 2015-10-20 12:26:08

6 réponses

application.propriétés fichier écrire ceci:

# Max file size.
spring.http.multipart.max-file-size=1Mb
# Max request size.
spring.http.multipart.max-request-size=10Mb

ajuster la taille en fonction de votre besoin.

mise à Jour

Remarque:Botte De Printemps 2 toutefois, vous pouvez maintenant faire

# Max file size.
spring.servlet.multipart.max-file-size=1MB
# Max request size.
spring.servlet.multipart.max-request-size=10MB

Annexe A. Propriétés communes d'application-printemps

25
répondu Sanjay Singh Rawat 2018-03-30 04:34:23

Trouvé une solution. Ajoutez ce code à la même classe running SpringApplication.exécuter.

// Set maxPostSize of embedded tomcat server to 10 megabytes (default is 2 MB, not large enough to support file uploads > 1.5 MB)
@Bean
EmbeddedServletContainerCustomizer containerCustomizer() throws Exception {
    return (ConfigurableEmbeddedServletContainer container) -> {
        if (container instanceof TomcatEmbeddedServletContainerFactory) {
            TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;
            tomcat.addConnectorCustomizers(
                (connector) -> {
                    connector.setMaxPostSize(10000000); // 10 MB
                }
            );
        }
    };
}

modifier: apparemment en ajoutant ceci à votre application.propriétés fichier va également augmenter la taille maxPostSize, mais je ne l'ai pas essayé moi-même donc je ne peux pas confirmer.

multipart.maxFileSize=10Mb # Max file size.
multipart.maxRequestSize=10Mb # Max request size.
13
répondu Jordan 2016-05-03 00:36:46

à partir de la documentation: https://spring.io/guides/gs/uploading-files/

according file upload limits

lors de la configuration du téléchargement de fichiers, il est souvent utile de fixer des limites sur le la taille des fichiers. Imaginez que vous essayez de gérer un téléchargement de fichier de 5 Go! Avec Le Printemps Boot, nous pouvons adapter son multipart-configuré auto avec certains les paramètres de propriété.

Ajouter les propriétés suivantes à votre existant src/main/resources/application.properties:

spring.http.multipart.max-file-size=128KB

spring.http.multipart.max-request-size=128KB

Le multipart paramètres sont limités comme suit:

  • spring.http.multipart.max-file-size is set to 128KB, ce qui signifie total la taille du fichier ne peut pas dépasser 128Ko.

  • spring.http.multipart.max-request-size est fixé à 128KB, ce qui signifie la taille totale de la demande pour un multipart / form-data ne peut dépasser 128KB.

4
répondu Dániel Kis 2017-01-04 15:43:30

si vous utilisez x-www-form-urlencoded mediatype dans vos requêtes POST (comme je le fais), le multipart propriété du printemps-boot ne fonctionne pas. Si votre application de démarrage à ressort démarre également un tomcat, vous devez définir la propriété suivante dans votre application.fichier de propriétés:

# Setting max size of post requests to 6MB (default: 2MB)
server.tomcat.max-http-post-size=6291456

Je n'ai pu trouver cette information nulle part dans les documentations de démarrage. J'espère que ça aidera tous ceux qui restent avec x-www-form-urlencoded encodage du corps.

4
répondu Fabi Ko 2018-08-21 13:53:37

il y a une différence quand on définit les propriétés dans le application.yaml et application.properties.

application.yml:

spring:
  http:
    multipart:
      max-file-size: 256KB
      max-request-size: 256KB

Et application.propeties:

spring.http.multipart.max-file-size=128KB
spring.http.multipart.max-request-size=128KB

Remarque: Printemps version 4.3 et au Printemps de démarrage 1.4

3
répondu denzal 2018-04-26 20:17:31

tout d'Abord, assurez-vous d'utiliser spring.servlet au lieu de spring.http.

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

si vous devez utiliser tomcat, vous pourriez finir par créer EmbeddedServletContainerCustomizer, qui n'est pas vraiment la bonne chose à faire.

Si vous pouvez vivre sans tomat, vous pouvez remplacer tomcat par ex. undrow et d'éviter ce problème.

2
répondu Ondrej Kvasnovsky 2018-02-22 02:56:57