2013-08-06 4 views
0

파일 형식을 다른 파일 형식으로 변환하는 웹 서비스를 실행합니다. 변환 논리는 이미 작동하지만 이제 Jersey를 통해이 논리를 쿼리하려고합니다. Jersey를 통한 파일 업로드가 자습서/질문에서 언급 될 때마다 사람들은 여러 부분 양식 데이터를 사용하여이를 수행하는 방법을 설명합니다. 그러나 단순히 하나의 파일을 보내고 반환하고 여러 부분을 보내는 오버 헤드를 건너 뛰기 만하면됩니다. 합니다 (웹 서비스는 내가 반군 HTML 양식이 없도록 제어하는 ​​다른 시스템에 의해 트리거됩니다.)멀티 파트를 사용하지 않고 Jersey에서 파일 업로드

내 질문에 나는 다음과 같은 것을 달성 할 방법입니다 : 내가 잡아 어떻게

@POST 
@Path("{sessionId"} 
@Consumes("image/png") 
@Produces("application/pdf") 
public Response put(@PathParam("sessionId") String sessionId, 
        @WhatToPutHere InputStream uploadedFileStream) { 
    return BusinessLogic.convert(uploadedFile); // returns StreamingOutput - works! 
} 

uploadedFileStream (일부 주석이어야합니다. 물론 어느 것이 @WhatToPutHere이 아닐까요). 내가 직접 StreamingOutput 통해 파일을 반환하는 방법을 알아 냈습니다.

도움 주셔서 감사합니다.

답변

2

함수의 두 번째 매개 변수에는 아무 것도 입력 할 필요가 없습니다. 그냥 un-annoted로 두십시오. 당신이 자르해야 있는 유일한 방법은에 "이름"자원이다

같은 URI가 있어야 자원 : 함수가 있어야한다, 그래서 someSite/someRESTEndPoint/myResourceId :

@POST 
@Path("{myResourceId}") 
@Consumes("image/png") 
@Produces("application/pdf") 
public Response put(@PathParam("myResourceId") String myResourceId, 
               InputStream uploadedFileStream) { 
    return BusinessLogic.convert(uploadedFileStream); 
} 
당신이 세션 ID의 어떤 종류를 사용하려면

, 나는 헤더 파람를 사용하는 것을 선호 것 ... 같은 :

@POST 
@Path("{myResourceId}") 
@Consumes("image/png") 
@Produces("application/pdf") 
public Response put(@HeaderParam("sessionId") String sessionId, 
        @PathParam("myResourceId") String myResourceId, 
               InputStream uploadedFileStream) { 
    return BusinessLogic.convert(uploadedFileStream); 
} 
+0

'sessionId'는 내 시나리오에서는 HTTP 세션을 나타내지 않지만 tipp와 답은 물론입니다. –

관련 문제