복붙노트

[SPRING] 스프링 MVC 프레임 워크 : PUT 방식에 MultipartResolver

SPRING

스프링 MVC 프레임 워크 : PUT 방식에 MultipartResolver

나는 프레임 워크 3.2.3.RELEASE와 스프링 MVC 응용 프로그램을 개발하고 있어요

내 응용 프로그램에서 나는 StandardServletMultipartResolver과 여러 부분을 처리하지만, 아파치 평민 - 파일 업로드 1.3 일들은 동일합니다.

나는 isMultipart 방법의 구현이 계정에만 POST 방법에 걸릴 이유를 알고, 그리고 방법을 PUT하지 않을 것입니다. 내가 엔티티와 관련 파일을 업데이트하려면 내가 POST로 수행해야합니다.

org.springframework.web.multipart.support.Standard ServletMultipartResolver 보면 :

public boolean isMultipart(HttpServletRequest request) {
    // Same check as in Commons FileUpload...
    if (!"post".equals(request.getMethod().toLowerCase()) ) {
        return false;
    }
    String contentType = request.getContentType();
    return (contentType != null && contentType.toLowerCase().startsWith("multipart/"));
}

org.apache.commons.fileupload.servlet.ServletFileU에 PLOAD 동안 내가 가진 :

public static final boolean isMultipartContent(HttpServletRequest request) {
    if (!POST_METHOD.equalsIgnoreCase(request.getMethod() )) {
        return false;
    }
    return FileUploadBase.isMultipartContent(new ServletRequestContext(request));
}

매우 중요한의 일이 아니라, 실제로 단지 PUT 작업 대신 POST 메소드를 사용합니다 ..하지만 PUT을 고려하지 않는 이유를 이해하려면!

어떤 응답을 주셔서 감사합니다 마르코

해결법

  1. ==============================

    1.RFC는 말했다

    RFC는 말했다

    http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6

    그래서 PUT 요청은 단일 리소스를 나타냅니다. 그러나 멀티 파트는 하나의 몸에 여러 자원을 의미한다.

    http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html

    따라서 PUT 요청의 의미로 다중 데이터와 일치하지 않습니다. 그리고 POST는 POST 요청의 요청 URI는 "하위 개체의 처리기"때문에 일치합니다.

  2. ==============================

    2.PUT 예를 하나 개의 파일에 대해, 하나의 자원을 의미한다. 그래서, 정의에 의해, 여러 부분의 형태는 PUT 동사를 일치하지 않습니다.

    PUT 예를 하나 개의 파일에 대해, 하나의 자원을 의미한다. 그래서, 정의에 의해, 여러 부분의 형태는 PUT 동사를 일치하지 않습니다.

    그래서 나는 그들이 POST는 HTTP 사양에 적용 할 수 있도록 이러한 검사를 만든 것 같아요 : http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

    난 당신이 하나 이상의 파일을 포함하여 여러 필드를 포함하는 사용자 지정 개체, 확인을해야 넣어, 그것은 여전히 ​​REST 측면에서 하나 개의 자원 것으로 간주 될 수 있다고 주장 수도 있겠죠,하지만 대부분의 구현이 해석하는 것 방법이 아니다 .

  3. from https://stackoverflow.com/questions/20373912/spring-mvc-framework-multipartresolver-with-put-method by cc-by-sa and MIT license