2017-10-24 5 views
0

Body (s)가 Content-Disposition의 filename 속성을 잃어 버리는 Multipart 업로드를 Spring (또는 Jetty)이 수락/분석하도록 만드는 방법?Spring Boot, Jetty : Multipart upload - Spring/Jetty가 "filename"속성이없는 본문 부분을 허용합니까?

누락 된 filename 속성 이외의 경우에는 Multipart 메시지가 정상이며 이전 버전의 Jetty/Spring에서도 사용되었습니다.

Jetty/Spring을 다시 오류 허용하도록 설정하려면 무엇이 필요합니까?

P. 여기 비슷한 비슷한 문제가 발견되었습니다 (name 속성 누락). Spring POST multipart/form-data Request empty body, getParts always empty

+0

지금까지의 해결책 : Jetty의 StandardMultipartHttpServletRequest 클래스를 재정의하고 파일 이름이 없을 때 본문 부분을 건너 뛰지 않도록 parseRequest 메서드를 다시 구현합니다. 더 좋은 제안은 없습니까? –

답변

0

이미 댓글에서 언급 한 바와 같이 :

봄 (4.3.8.RELEASE name가 신체 부위를 식별하는 데 중요한 속성처럼 보인다 동안 그러나, 당신은 반드시 원래의 클라이언트 측 파일 이름이 필요하지 않습니다) 무조건 파일 이름없이 멀티 파트 파일을 건너 뜁니다. 즉, 오류를 허용 할 수있는 설정이 없습니다. 따라서 유일한 해결책은 Spring의 StandardMultipartHttpServletRequest 클래스를 오버라이드하고 문제의 메소드를 변경하는 것입니다 : parseRequest.

코드의 추가 라인 :

if (filename == null && "file".equalsIgnoreCase(part.getName()) && MediaType.APPLICATION_OCTET_STREAM.equalsIgnoreCase(part.getContentType())) { 
    filename = DEFAULT_FILENAME; 
} 

그리고 네, 멀티 파트 본문 부분의 이름은 반드시 "파일"일 필요는 없습니다하지만이 이름이 내 코드가 작동하는 클라이언트 응용 프로그램입니다 와 함께 파일을 업로드 할 때 사용하고 있습니다.