파일 업로드는 작은 파일 (기본 2MB 제한)에서 작동하지만 큰 파일에서는 작동하지 않습니다. Tomcat 8.0에서 JSF를 사용하고 있으며 제한을 늘리기 위해 web.xml을 적절하게 수정했습니다. javax.servlet.MultipartConfig의 생성자에 중단 점을 넣었으므로 web.xml 구성을 읽습니다. 액션이 호출 될 때 기본값으로 2MB가 기본값으로 돌아갑니다 (특히 Request.parseParts (...)에서는 래퍼의 config가 null이므로 커넥터의 기본값을 사용합니다).multipart-config를 무제한 크기로 설정 했음에도 불구하고 대용량 파일 업로드가 JSF + tomcat에서 작동하지 않습니다.
의 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>
업데이트 간단한 프로그램을 작성 후, 다시 쓰기 라이브러리가 요청에서 다른 컨테이너 래퍼를 사용하고있는 것 같습니다. 재 작성없이
: Request.getWrapper()
반환 StandardEngine[Catalina].StandardHost[localhost].StandardContext[/TestWeb].StandardWrapper[Faces Servlet]
재 작성 @URLMapping
주석
: Request.getWrapper()
반환 StandardEngine[Catalina].StandardHost[localhost].StandardContext[/TestWeb].StandardWrapper[default]
그래서 내가이 구성되어 얼굴 방식과 유사이 응용 프로그램의 기본 컨테이너를 구성, 또는를 찾을 필요가 보인다 Faces Servlet 컨테이너에 위임하도록 Rewrite를 얻는 방법. Tomcat에서 maxPostSize를 편집하는 것은 옵션입니다 (기본값 변경).하지만 피할 수 있다면 취하고 싶지 않습니다.
:
내 솔루션의 web.xml의 기본 서블릿 설정 멀티 - 설정을 이동 (또는 복사)하는 것이었다. https://docs.oracle.com/javaee/7/tutorial/servlets011.htm – Grayson
Tomcat 8.0을 이해함에 따라 그렇지 않습니다. 지정된 구성이 없으면 기본값은 커넥터의 MaxPostSize() (2MB – JSub
)에서 가져온 것입니다. 간단한 응용 프로그램을 만들었지 만 동일한 문제가 나타나지 않아 어딘가에 구성 문제가 있다고 생각합니다. – JSub