2012-09-27 3 views
1

pdf 데이터를 가진 OutputStream 객체를 파일로 webbrowser에 보내고 싶습니다.봄 OuputStream 파일 다운로드?

코드는 다음과 같습니다.

@RequestMapping(value="/issue", method=RequestMethod.POST) 
public void issue(HttpServletResponse response, TimeStampIssueParam param) throws JsonGenerationException, JsonMappingException, IOException { 

    OutputStream pdfOuput = issue(input); 
    response.setContentType("application/pdf"); 
    ServletOutputStream respOutput = response.getOutputStream(); 
    .... 

} 

문제는 이미 outputstream이 있고 바이트 배열로 변환하고 싶지 않다는 것입니다.

모든 의견을 보내 주시면 감사하겠습니다.

답변

1

다음과 같은 작업은 할 수 없습니다. InputStream 만 OutputStream에 복사 할 수 있습니다. 그런 다음, 당신은 사용할 수 있습니다 : org.springframework.util.FileCopyUtils.copy (InputStream, OutputStream)

1

첫째, 나는 그것이 잘못된 말을하는 것은 모든 데이터를 가지고있다. 스트림을 통해 데이터를 일부 대상으로 보낼 수 있습니다. 때로는 (SocketOutputStream)이 대상은 완전히 다른 컴퓨터에있을 수 있으며 때로는 (ByteArrayOutputStream) 스트림과 밀접한 관련이 있으며 심지어이를 통해 얻을 수도 있습니다. 그러나 이것은 특정 스트림의 세부 사항으로, 임의의 스트림에서 기대할 수있는 것이 아닙니다.

따라서 issue 메서드의 결과가 어디에서 왔는지 정확히 알 수없는 경우 솔루션을 제공하기가 어렵지만 일반적인 OutputStream은 반환해야하는 것이 아닙니다. 그것은 File 만들고 스트림이 FileOutputStream에 될 일 경우 파일을 반환해야합니다,

  • :이 방법은 일부 PDF 데이터를 생성 및 OutputStream를 통해 어딘가에 기록하는 추측

    은 다음 스트림을 반환 , 파일 경로 또는 동일한 파일에 대한 FileInputStream.

  • 예를 들어, ByteArrayOutputStream의 경우 바이트 배열이 이미 있고이 스트림 유형에는 ServletOutputStream에 직접 데이터를 쓰는 데 직접 사용할 수있는 writeTo 메서드가 있습니다. issue 그냥 일반적인 인터페이스 뒤에 숨어 있지 않은 적절한 형식으로 스트림을 반환해야합니다.
  • 다른 OutputStream 유형의 경우 글자가 정확히 무엇인지에 따라 다릅니다.