2017-10-09 5 views
0

Excel 파일을 받아야하는 POST 메서드를 개발하고 있지만 몇 가지 문제가 있습니다. 내가 API를 호출 할 때이 서버 측에서, 내 코드POST를 사용하여 파일을 업로드 할 때 JAX-RS 문제

@Path("/rest") 
public class RestManager{ 
    [...] 

    @Path("/uploadFile") 
    @Consumes(MediaType.MULTIPART_FORM_DATA) 
    @POST 
    public Response uploadFile(FormDataMultiPart multipart){ 
     [...] 
    } 
} 

이다 나는 다음과 같은 오류가 있습니다

<init-param> 
    <param-name>jersey.config.server.provider.classnames</param-name> 
     <param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value> 
    </init-param> 
: 내 web.xml에
ott 09, 2017 4:58:48 PM org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor aroundReadFrom 
GRAVE: MessageBodyReader not found for media type=multipart/form-data, type=class com.sun.jersey.multipart.FormDataMultiPart, genericType=class com.sun.jersey.multipart.FormDataMultiPart. 

, 나는 다음과 같은 코드를 추가를

Tomcat v7.0에서 실행 중이며 다중 데이터를 관리하기 위해 jersey-multipart-1.18 및 mimepull-1.9.3을 추가했습니다.

클라이언트 응답이 415 지원되지 않는 미디어 유형을 얻지 만 코드에서 요청 유형 'Content-Type': 'multipart/form-data'을 @Consumes 주석과 함께 보냅니다.

아무도 문제를 이해할 수있는 힌트를 줄 수 있습니까?

답변

1

잘못 사용하고 있습니다. FormDataMultiPart. 당신이 사용하고있는 것은 Jersey 1.x 항아리에서 가져온 것이지만 Jersey 2.x에서 가져와야합니다. 항아리는 jersey-media-multipart입니다. 이 jar를 추가하고 1.x jar를 제거하면 FormDataMultiPart의 패키지 이름이 달라집니다. org.glassfish.jersey.multipart에서 가져와야합니다.

다른 저지, 사용중인 저지 (부 버전) 및 사용중인 jersey-media-multipart 버전에 따라 mimepull 버전도 달라집니다. this link을 확인하고 사용중인 버전을 클릭하십시오. 그런 다음 "종속성 컴파일"로 스크롤하십시오. mimepull이 표시됩니다. 이 버전은 사용중인 jersey-media-multipart 버전과 호환되는 버전입니다.