Datei-Uploads funktionieren für kleine Dateien (unter der standardmäßigen 2MB Grenze), funktionieren aber nicht für größere Dateien. Ich verwende JSF auf Tomcat 8.0 und habe meine web.xml entsprechend modifiziert, um das Limit zu erhöhen. Ich habe Haltepunkte im Konstruktor von javax.servlet.MultipartConfig gesetzt, damit ich sehen kann, dass er die web.xml-Konfiguration liest. Wenn die Aktion jedoch aufgerufen wird, wird standardmäßig auf den Standardwert von 2 MB zurückgesetzt (speziell in Request.parseParts (...) ist die Konfiguration des Wrappers null und verwendet den Standardwert des Connectors).Large File Upload funktioniert nicht mit JSF + tomcat trotz Einstellung von multipart-config auf unbegrenzte Größe
Web.xml:
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<multipart-config>
<max-file-size>-1</max-file-size>
<max-request-size>-1</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
</servlet>
home.xhtml
<h:form id="contentFormId" enctype="multipart/form-data">
...
<h:inputFile style="display:none;" id="fileUpload" value="#{bean.uploadItem}">
</h:inputFile>
<h:commandButton id="browse" action="#{bean.fileUploadListener}" value="Add Files" onclick="$('#contentFormId-fileUpload').click()">
</h:commandButton>
...
</h:form>
context.xml
<?xml version="1.0" encoding="utf-8"?>
<Context allowCasualMultipartParsing="true"
...
</Context>
aktualisiert Nach einer vereinfachten Anwendung zu schaffen, i t scheint, dass die Rewrite-Bibliothek einen anderen Container-Wrapper in der Anfrage verwendet.
Ohne Rewrite: Request.getWrapper()
kehrt StandardEngine[Catalina].StandardHost[localhost].StandardContext[/TestWeb].StandardWrapper[Faces Servlet]
Mit Rewrite @URLMapping
Anmerkung: Request.getWrapper()
kehrt StandardEngine[Catalina].StandardHost[localhost].StandardContext[/TestWeb].StandardWrapper[default]
So scheint es, dass ich konfigurieren müssen Standard-Containers dieser Anwendung ähnlich, wie konfiguriert Faces ist, oder ein finden Möglichkeit, mit Rewrite an den Faces-Servlet-Container zu delegieren. Bearbeiten der MaxPostSize in Tomcat ist eine Option (ändern Sie die Standardeinstellung), aber nicht eine, die ich nehmen möchte, wenn ich es vermeiden kann.
Sie sollten wahrscheinlich Ihre mehrt Config entfernen, da die Standardwerte sind, was Sie wollen. Siehe https://docs.oracle.com/javaee/7/tutorial/servlets011.htm – Grayson
Nicht mit Tomcat 8.0, wie ich es verstehe. Ohne eine spezifizierte Konfiguration kommt der Standard von der MaxPostSize() des Connectors, die 2MB ist – JSub
Ich machte eine vereinfachte Anwendung, und es zeigte nicht das gleiche Problem, also denke ich, dass ich irgendwo ein Konfigurationsproblem habe. – JSub