문제

나는 다양한 작업에 사용되는 서블릿을 가지고 있습니다. 전면 컨트롤러 패턴.다시 게시된 데이터가 enctype="multipart/form-data"인지 알 수 있는지 아는 사람이 있습니까?이를 결정할 때까지는 요청 매개변수를 읽을 수 없으므로 요청을 적절한 컨트롤러로 보낼 수 없습니다.

어떤 아이디어가 있나요?

도움이 되었습니까?

해결책

예, Content-type 사용자 에이전트 요청의 헤더에는 다음이 포함되어야 합니다. multipart/form-data (적어도) HTML4 사양에 설명된 대로:

http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2

다른 팁

위에 제시된 request.getContentType() 메서드를 사용하려고 한다면 다음 사항에 유의하세요.

  1. request.getContentType()은 null을 반환할 수 있습니다.
  2. request.getContentType()은 그렇지 않을 수 있습니다. 동일한 "multipart/form-data"로 변경했지만 그냥 시작할 수도 있습니다.

이를 염두에 두고 실행해야 할 검사는 다음과 같습니다.

if (request.getContentType() != null && request.getContentType().toLowerCase().indexOf("multipart/form-data") > -1 ) {
// Multipart logic here
}

콘텐츠 유형을 가져오는 메서드를 호출할 수 있습니다.

http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletRequest.html#getContentType()

에 따르면 http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2, 콘텐츠 유형은 "multipart/form-data"입니다.

다음 사항을 잊지 마세요.

  1. request.getContentType()은 null을 반환할 수 있습니다.

  2. request.getContentType()은 "multipart/form-data"와 같지 않을 수 있지만 그냥 시작될 수 있습니다.

따라서 이 모든 것을 염두에 두고:

if (request.getContentType() != null && 
    request.getContentType().toLowerCase().indexOf("multipart/form-data") > -1 ) 
{
    << code block >>
} 

ServletFileUpload는 isMultipartContent()를 구현합니다.아마도 필요에 따라 이 구현을 해제할 수 있습니다(ServletFileUpload를 생성하기 위해 오버헤드를 거치는 대신).

http://www.docjar.com/html/api/org/apache/commons/fileupload/servlet/ServletFileUpload.java.html

이를 확인하려면 최소한 요청 매개변수를 읽어야 합니다. 일부 수준.ServletRequest 클래스에는 살펴보고 싶은 getContentType 메소드가 있습니다.

확장하려면 awm129의 답변 - Apache Commons의 구현은 다음과 같습니다.

if (request != null 
        && request.getContentType() != null 
        && request.getContentType().toLowerCase(Locale.ENGLISH).startsWith("multipart/")) {
    ...
}

Apache Commons를 사용하면 훨씬 더 짧게 작성할 수 있습니다. org.apache.commons.lang3.StringUtils:

if (StringUtils.startsWithIgnoreCase(request.getContentType(), "multipart/")) { 
    ... 
}

https://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getParts()

java.util.Collection getParts()

던지기:ServletException - 이 요청이 multipart/form-data 유형이 아닌 경우

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top