2012-01-11 3 views
5

이 상황에서 검색 결과 파일이 포함 된 zip 파일을 만들어 사용자에게 보내려고합니다. 다음은 현재 사용하려고 시도하는 코드입니다.OutputStream을 통해 브라우저에 zip 파일을 반환하려면 어떻게해야합니까?

File[] zippable = new File[files.size()]; 
File resultFile = ZipCreator.zip(files.toArray(zippable), results); 
InputStream result = new FileInputStream(resultFile); 
IOUtils.copy(result, response.getOutputStream()); 

그러나 현재로서는 제대로 작동하지 않습니다. 내가 만든 zip 파일을 반환하는 대신 html 파일을 반환합니다. 나중에 수동으로 파일 확장명을 변경하면 파일의 내용이 내가 필요한 검색 결과임을 알 수 있습니다. 따라서 문제는 응답에 적절한 확장을 반환하는 것입니다.

누구에게이 상황에 대한 조언이 있습니까?

답변

6

Content-Type 응답 헤더를 application/zip (또는 대상 브라우저에 따라 application/octet-stream) 값으로 설정해야합니다. 또한 첨부 파일 상태 및 파일 이름을 나타내는 추가 응답 헤더를 보낼 수도 있습니다.

+0

내가 여기 오해를하고있을 수도 있습니다. 나는 코드에 한 줄을 추가 했으므로 이제는'response.setHeader ("Content-Type", "application/zip");을 읽는다. 그래도 성공하지 못했다. 이 호출은 IOUtils.copy – Bennie

+0

@Bennie를 호출하기 직전입니다. 정상적으로 보이지만 ZIP 파일에 사용할 "올바른"MIME 유형에 대한 혼란이 있습니다. 따라서이 값을 가지고 놀고 싶을 수도 있습니다 . – maerics

+0

좋아요, 지금은 파일을 반환하기 위해 작동 중입니다. 파일이 "exportZipSearchResults.htm.zip"인 곳에서 이상한 일을합니다. 응답의 파일 이름을 변경하는 기본 제공 방법이 있습니까? – Bennie

1

결과를 스트리밍하기 전에 콘텐츠 형식 헤더를 application/octet-stream으로 설정해야합니다. response의 구현에 따라 실제로 어떻게 사용하는지에 달려 있습니다.

관련 문제