사용자가 여러 파일을 백엔드 서버에 제출할 수있는 서블릿 기반 양식을 만들려고합니다.멀티 파트/양식 데이터를 제출할 때 Servlet request contenttype = null
양식은 여러 파일 선택기로 구성됩니다.
양식이 하나의 서블릿에서 인쇄되어 출력 스트림에 text/html로 전송됩니다. 내가 하나 개 이상의 파일을 선택하고 클릭하면
<form action="https://localhost:8441/uploadtest" method="post" enctype="multipart/form-data" >
하는 버튼을 제출 브라우저에서
html로는 다음과 같습니다 (사용자 등으로 기록됩니다 어떠했는지에 페이지의 많은 의존) 요청은 올바른 링크로 전달되지만 request.getContentType()은 null이므로 내 파일 업로드 처리기는 데이터를 처리 할 수 없습니다.
서블릿을 호스트하기 위해 임베디드 jetty 9 서버를 사용합니다. Servlet API 버전은 3.0입니다. 처리기는 콘텐츠 유형이 null임을 나타내는 예외를 throw하고 디버깅을 위해 추가 한 print 문 출력에 의해 확인됩니다.
지금은 몇 시간 동안 문제를 찾고있는 &을 찾고 있는데, 양식이 multipart/form-data처럼 enctype이 포함 된 POST 요청을 제출하더라도 콘텐츠 유형이 null로 설정된 이유를 알 수 없습니다.
핸들러 코드는 이것이다 :
@Override
public void doHandle(String target, Request baseRequest, HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
String contentType = request.getContentType();
System.out.println(contentType);
if (contentType != null && contentType.startsWith("multipart/form-data")) {
baseRequest.setAttribute(Request.__MULTIPART_CONFIG_ELEMENT, MULTI_PART_CONFIG);
}
//processing here.
:
및 핸들러 자체 :
경우 사용자가 동일한 문제를 겪고, 여기에 서버 구성의 관련 비트 코드입니다 2.5 이전에? –
Servlet API 3.0,이 jetty 버전에 포함됨. – Feone