복붙노트

[SPRING] SPRING REST : 다중 부분 경계가 발견되지 않아 요청이 거부되었습니다.

SPRING

SPRING REST : 다중 부분 경계가 발견되지 않아 요청이 거부되었습니다.

나는 봄 3 나머지 멀티 파트 파일 업로드를위한 POC를했다. 잘 작동합니다. 하지만 내 응용 프로그램과 통합 할 때 문제가 발생했습니다.

다음 예외를 throw합니다.

org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request;
nested exception is org.apache.commons.fileupload.FileUploadException:
the request was rejected because no multipart boundary was found**"

제 코드가 잘못되었을 때 알려주십시오.

콩:

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
 <property name="order" value="1" />
 <property name="mediaTypes">
 <map>
   <entry key="json" value="application/json" />
   <entry key="xml" value="application/xml" />
   <entry key="file" value="multipart/mixed" />
 </map>
</property>
</bean>
<!-- multipart resolver -->
 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  <!-- one of the properties available; the maximum file size in bytes -->
  <property name="maxUploadSize" value="50000000" />
 </bean>

제어 장치:

@Controller
public class MultipleFilesRecieve {
    @RequestMapping ( value = "/saveMultiple", method = RequestMethod.POST )
        public String save( FileUploadForm uploadForm ) {
        List<MultipartFile> files = uploadForm.getFiles( );
        List<String> fileNames = new ArrayList<String>( );
        if ( null != files && files.size( ) > 0 ) {
            for ( MultipartFile multipartFile : files ) {
                String fileName = multipartFile.getOriginalFilename( );
                fileNames.add( fileName );
            }
        }
        return "multifileSuccess";
    }
}

해결법

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

    1.문제는 귀하의 코드에 없습니다. 귀하의 요청에 있습니다. 다중 요청에서 경계가 누락되었습니다. 그것이 사양에서 말했듯이 :

    문제는 귀하의 코드에 없습니다. 귀하의 요청에 있습니다. 다중 요청에서 경계가 누락되었습니다. 그것이 사양에서 말했듯이 :

    이 게시물과이 게시물도 도움이됩니다.

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

    2.@ sermolaev 그의 대답은 바로 있습니다.

    @ sermolaev 그의 대답은 바로 있습니다.

    이 문제와 관련된 경험을 공유하고 싶습니다. 나는 우편 배달부에서이 문제를 겪었지만 오랫동안 그 근본 원인을 이해할 수 없었다. 내 요청 템플릿이 Postman에 경계가 포함 된 올바른 원인 인 것으로 보입니다 ...

    결국 나는 Content-Type = multipart / form 헤더를 직접 지정하면 Postman이 자동으로 추가 한 것을 오버라이드한다는 것을 발견했습니다. 그리고 이것은 당신과 같은 오류로 이어집니다. 내 솔루션은 Content-Type 헤더를 제거하는 것처럼 간단했습니다.

  3. ==============================

    3.보안 필터를 사용하고 있습니까? 내 문제는 보안 필터 체인을 제거하여 해결되었습니다. 이것으로부터:

    보안 필터를 사용하고 있습니까? 내 문제는 보안 필터 체인을 제거하여 해결되었습니다. 이것으로부터:

    this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).addFilters(this.springSecurityFilterChain).build();
    

    이에:

    this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
    

    나는 세부 사항을 설명하는 문제를 열었다 : https://jira.spring.io/browse/SPR-12114

  4. from https://stackoverflow.com/questions/17462642/spring-rest-the-request-was-rejected-because-no-multipart-boundary-was-found by cc-by-sa and MIT license