2013-07-05 3 views
3

문제없이 파일이있는 zip 파일 (sample.zip)을 만들었습니다. sample.zip을 열면 예상 한 파일이 들어 있습니다.httpresponse에 zip 파일을 쓰는 방법

http 응답에 해당 zip 파일을 넣으 려합니다. 현재 다음을 사용 중입니다 :

 response.setContentType("application/zip"); 
     response.addHeader("Content-Disposition", "attachment; filename="+"sampleZip.zip"); 
     response.setContentLength(2048); 
     response.setHeader("Set-Cookie", "fileDownload=true; path=/"); 
     FileInputStream fileInputStream = new FileInputStream("sample.zip"); 
     OutputStream responseOutputStream = response.getOutputStream(); 
     int bytes; 
     while ((bytes = fileInputStream.read()) != -1) { 
      responseOutputStream.write(bytes); 
     } 
     response.flushBuffer(); 

이제 브라우저가 zip 파일을 기본 다운로드 위치에 다운로드합니다. 나는 그것이

파일을 열 수 없습니다 보여주는 그 zip 파일을 열 때 : 유효한 아카이브에게로 나타나지 않습니다를

친절하게이 제발 해결하는 데 도움이됩니다.

+2

content-type을 application/x-zip-compressed로 설정하고 작동하는지 확인하십시오. – Satya

+0

Sotirios Delimanolis : 바이트 작성 코드를 업데이트 해주십시오. – NivMack

+0

글자 크기를 1 바이트로 복사하고 있습니다. 시간은 효율적이지 않습니다 ...하지만 사본을 올바르게 작성해야합니다. –

답변

3

이 코드는 나에게 좋을 것 같습니다. 하지만 문제가 될 수있는 기본 콘텐츠 길이를 설정하고 있습니다. File 인스턴스를 만들고 file.length() 메서드를 사용하여 입력 스트림에 동일한 파일을 사용하는 내용 길이를 설정합니다. 또한 바이트 단위로 읽는 것은 좋은 생각이 아닙니다. 가능한 경우 아파치의 IOUtils.copy()를 사용하여 입력 스트림에서 ServletOutputStream으로 데이터를 복사하십시오.

관련 문제