Ändern von Datei-Größenbeschränkung (maxUploadSize) je nach controller
Ich habe eine Spring-MVC-web mit zwei verschiedenen Seiten, haben verschiedene Formulare laden Sie verschiedene Dateien. Einer von Ihnen soll eine Begrenzung von 2 MB, während die andere sollte eine 50 MB-Beschränkung.
Gerade jetzt, ich habe diese Einschränkung in meinem app-config.xml:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes (2097152 B = 2 MB) -->
<property name="maxUploadSize" value="2097152 "/>
</bean>
Und ich könnte zur Lösung der maxUploadSize Ausnahme in meinen Haupt-controller so:
@Override
public @ResponseBody
ModelAndView resolveException(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception exception) {
ModelAndView modelview = new ModelAndView();
String errorMessage = "";
if (exception instanceof MaxUploadSizeExceededException) {
errorMessage = String.format("El tamaño del fichero debe ser menor de %s", UnitConverter.convertBytesToStringRepresentation(((MaxUploadSizeExceededException) exception)
.getMaxUploadSize()));
} else {
errorMessage = "Unexpected error: " + exception.getMessage();
}
saveError(arg0, errorMessage);
modelview = new ModelAndView();
modelview.setViewName("redirect:" + getRedirectUrl());
}
return modelview;
}
Aber das, natürlich, nur steuert das 2MB limit. Wie könnte ich die Beschränkung für die maximale Größe von 20 MB ein???
Ich habe versucht, diese Lösung: https://stackoverflow.com/a/11792952/1863783, welche updates die Begrenzung der Laufzeit. Aber dieses updates ist es, für jede Sitzung und jeden controller. Also, wenn ein Benutzer eine Datei hochladen, die für die erste form, die anderen mit dem hochladen in das zweite Formular haben sollten, die Beschränkung, die erste...
Hilfe? Dank
- check this out geben Sie den link-Beschreibung hier
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, wie ist es möglich: Überschreiben der
DispatcherServlet
Klasse. Ein Beispiel wäre wahrscheinlich looke wie folgt:Unter der Annahme, dass Sie so konfiguriert haben, dass mehrere MultipartResolvers in Ihrer Anwendung-Rahmen (vermutlich mit dem Namen 'resolver1' und 'resolver2' im Beispiel-code).
Natürlich, wenn Sie in der Konfiguration die
DispatcherServlet
in Ihremweb.xml
Sie diese Klasse verwenden, statt der FederDispatcherServlet
.Einen anderen Weg: Eine MultipartFilter könnte auch verwendet werden. Nur das überschreiben der lookupMultipartResolver(HttpServletRequest request) - Methode und suchen Sie die benötigte resolver selbst. Es gibt jedoch einige wenn und aber zu. Schauen Sie die Dokumentation, bevor Sie mit dass.
Es mag nicht die beste Lösung, auf den ersten Blick, aber es hängt von Ihren Anforderungen ab.
Können Sie eine Globale option mit maximale upload-Größe für alle Controller und überschreiben Sie es mit dem unteren Wert für bestimmte Controller.
Anwendung.Eigenschaften-Datei (Spring Boot)
Upload controller mit check
Im Falle einer Datei größer als 2MB sind, bekommen Sie das exception im log:
Gibt es eine elegante Lösung, hier Spring Boot: ClassNotFoundException beim konfigurieren maxUploadSize von CommonMultipartResolver
können Sie Ihre Anwendung so modifizieren Anwendung.Eigenschaften - Datei, ändern Sie die maximale upload-Größe, wie Sie möchten