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.
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
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.
à 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.
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.
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
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.