12
votes

Spring Boot: ClassNotFoundException lors de la configuration de Maxuploadsize of CommonMultiParTresolver

J'utilise le démarrage de printemps pour mon application Web et j'essaie de configurer le maxuploadsize de Ring Spring CommonMultiParTresolver. Actuellement, il semble être limité par une taille par défaut de 1 Mo (?) De 1 Mo. Le téléchargement est effectué via une interface de repos et la signature de la méthode ressemble à ceci: xxx pré>

Chaque fois que j'essaie de télécharger un fichier plus grand, une fichierszelimitexceedException est lancée: P>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>mygroup</groupId>
    <artifactId>myapp.server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.1.9.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>17.0</version>
        </dependency>
        <dependency>
            <groupId>org.ini4j</groupId>
            <artifactId>ini4j</artifactId>
            <version>RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
        </dependency>
    </dependencies>

    <properties>
        <start-class>myapp.server.Application</start-class>
    </properties>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <finalName>${artifactId}</finalName>
    </build>

    <repositories>
        <repository>
            <id>spring-releases</id>
            <url>http://repo.spring.io/libs-release</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-releases</id>
            <url>http://repo.spring.io/libs-release</url>
        </pluginRepository>
    </pluginRepositories>
</project>


1 commentaires

Et avez-vous essayé de définir la propriété multipart.maxfilesize à l'intérieur d'un fichier application.properties fichier? Comme indiqué par le Guide de référence de démarrage à ressort dans la section de téléchargement de fichier? Pas besoin de définir le vôtre.


4 Réponses :


54
votes

Vous faites le chemin de complexe.

Ajouter Spring.http.multipar.maxfilesize à votre Application.properties Fichier et bien c'est. Pas besoin d'utiliser XML ou de définir explicitement un multipartresolver . xxx

Ceci est expliqué dans la section sur les téléchargements de fichier dans le Guide de référence de démarrage de ressort < / a>.

pour toutes les propriétés Vérifiez le multipartProperties classe. Les autres propriétés prises en charge sont spring.http.multipar.location , printemps.http.multipar.maxrequestsize et printemps.http.multipart.fileSizethreshold .

Le ClassNotFoundException est dû au fait que le démarrage du ressort utilise la prise en charge par défaut de servlet 3.0 pour les téléchargements de fichier non des biens-filedupload. Donc, si vous voulez utiliser cela, vous devriez expliquer explicitement la dépendance. Et bien sûr le printemps.http.multipart. * Les propriétés ne fonctionnent plus dans ce cas.


7 commentaires

Merci d'avoir souligné les documents respectifs, je devais l'avoir manqué :( depuis que j'ai déjà une classe de configuration avec des annotations et je préfère avoir toutes les configuration dans un endroit, je configure maintenant la taille de fichier Comme ça et définir la taille du fichier sur multipartProperties .


Pour une raison quelconque, "MB" jette une exception mais "MB" fonctionne ~


500MB fonctionne bien pour moi lors de la dernière chaussure à ressort (1.2.7). (Serait toujours bien si le guide de référence avait des mêmes valeurs.)


Sauveur en 2016 :) bonne et propre réponse propre.


La réponse est correcte mais peut-être que cela devrait être mis à jour car à partir de Spring boot 1.4 m3 La propriété a été modifiée en Spring.http.multipart.max-File-Taille


Je peux confirmer MB provoque une exception et MB fonctionne comme prévu.


Le MB vs mb "code> multiart de démarrage de printemps. * config est une peste de la mine - pourquoi ils ont décidé de confondre les gens avec le < Code> MB L'étiquette est au-delà de moi ( par exemple dans la documentation, etc.). Après tout, nous parlons de mégaoctets ( MB ) non megabits ( MB ).



3
votes
@Bean
MultipartConfigElement multipartConfigElement() {
    MultipartConfigFactory factory = new MultipartConfigFactory();
    factory.setMaxFileSize("5120MB");
    factory.setMaxRequestSize("5120MB");
    return factory.createMultipartConfig();
}
Try adding this in the class where you are defining beans.

2 commentaires

L'ajout de toutes les variantes possibles de la configuration basée sur YML ne fonctionnait pas pour moi. Cela a fait. Merci les gars.


Heureux de savoir ça.



1
votes

avec Spring-Boot 1.5.3 Vous devez utiliser le code suivant dans application.yml xxx


0 commentaires

0
votes

Pour Spring Boot 2.0+ Utiliser Spring.Servlet au lieu de Spring.HTTP

spring.servlet.multipart.max-file-size=30MB
spring.servlet.multipart.max-request-size=30MB


0 commentaires