SpringBoot's @MultipartConfig maxFileSize wird nicht wirksam

9

Ich habe einen Controller mit einer MultipartConfig Annotation (ein Ausschnitt davon ist unten gezeigt):

%Vor%

Beim Hochladen einer Datei an diesen Endpunkt werden jedoch die standardmäßigen mehrteiligen Konfigurationswerte verwendet:

%Vor%

Meine Bewerbung sieht so aus:

%Vor%

Gibt es etwas, das mir fehlt, das die @MultipartConfig -Anmerkung wirksam werden lässt?

    
Nic Wolfe 29.04.2016, 18:46
quelle

4 Antworten

11

Wenn Sie nur die Multipart-Eigenschaften steuern möchten, können Sie die Eigenschaften multipart.max-file-size und multipart.max-request-size verwenden. Beispielsweise könnten Sie die maximale Größe auf 100Mb erhöhen, indem Sie in Ihrer application.properties -Datei die folgenden Konfigurationselemente hinzufügen:

%Vor%

Werte können das Suffix MB oder KB verwenden, um eine Megabyte oder Kilobyte Größe anzugeben.

Unter der Haube erstellt Spring Boot einen MultipartConfigElement basierend auf MultipartProperties und dieser MultipartConfigElement wird in der Servlet Registrierung verwendet, wie in Spring MVC Dokumentation . Sie können sich MultipartAutoConfiguration und DispatcherServletConfiguration und Checkout Spring Boot-Dokumentation für weitere Informationen.

    
Ali Dehghani 29.04.2016, 19:05
quelle
13

Bei Spring-Boot 1.5.3 sollten Sie den folgenden Code in application.yml verwenden

%Vor%

Stellen Sie sicher, Leerzeichen und nicht Tab in Ihrer Yaml-Datei zu verwenden.

    
Teebo 25.04.2017 03:42
quelle
8

Um benutzerdefinierte Beschränkungen für mehrteilige Uploads festzulegen, müssen die folgenden Eigenschaften verwendet werden (für eine Stichprobengröße von 30 MB):

%Vor%

In unseren Projekten fand ich heraus, dass einer von ihnen auf Spring Boot Version 1.3.5 war, also für Versionen & lt; 1.4 sollten Sie

verwenden %Vor%

Aus der Dokumentation ( v1.4.0) :

  

Spring Boot umfasst die Servlet 3 javax.servlet.http.Part API zu   unterstützt das Hochladen von Dateien. Standardmäßig konfiguriert Spring Boot Spring MVC   mit einer maximalen Dateigröße von 1 MB pro Datei und maximal 10 MB Dateidaten   in einer einzigen Anfrage. Sie können diese Werte sowie die   Speicherort, an dem Zwischendaten gespeichert sind (z. B. an /tmp   Verzeichnis) und der Schwellenwert, nach dem Daten von der Festplatte gelöscht werden   Verwenden der Eigenschaften, die in der Klasse MultipartProperties verfügbar sind. Wenn du   möchte angeben, dass Dateien unbegrenzt sein sollen, z. B. die    spring.http.multipart.max-file-size Eigenschaft zu -1 .

     

Die mehrteilige Unterstützung ist hilfreich, wenn Sie mehrere Teile erhalten möchten   codierte Dateidaten als @RequestParam -annotated Parameter des Typs    MultipartFile in einer Spring-MVC-Controller-Handler-Methode.

Gleiche Dokumentation für Version 1.3.8:

  

Wenn Sie festlegen möchten, dass Dateien unbegrenzt sein sollen, setzen Sie z. B. die Option    multipart.maxFileSize Eigenschaft zu -1 .

    
cst1992 07.12.2017 06:23
quelle
2

Mit Spring Boot 2.0 sollten Sie dies in Ihrer application.yml

verwenden %Vor%

Von Dokumentation :

  

Spring Boot umfasst die Servlet 3 javax.servlet.http.Part API, um das Hochladen von Dateien zu unterstützen. Standardmäßig konfiguriert Spring Boot Spring MVC mit einer maximalen Größe von 1 MB pro Datei und maximal 10 MB an Dateidaten in einer einzigen Anfrage. Sie können diese Werte überschreiben, den Speicherort, in dem Zwischendaten gespeichert sind (z. B. im Verzeichnis /tmp ), und den Schwellenwert, über den Daten mithilfe der Eigenschaften in der Klasse MultipartProperties auf die Festplatte geschrieben werden. Wenn Sie beispielsweise angeben möchten, dass Dateien unbegrenzt sein sollen, legen Sie die Eigenschaft spring.servlet.multipart.max-file-size auf -1 fest.

Entnommen aus Anhang A der Dokumentation

  

spring.servlet.multipart.max-file-size = 1 MB # Maximale Dateigröße. Werte können die Suffixe "MB" oder "KB" verwenden, um Megabyte bzw. Kilobyte anzugeben.

     

spring.servlet.multipart.max-request-size = 10 MB # Maximale Anforderungsgröße. Werte können die Suffixe "MB" oder "KB" verwenden, um Megabyte bzw. Kilobyte anzugeben.

    
Cedric 29.01.2018 11:07
quelle