2012-08-02 3 views
4

리치 페이스 데이터 테이블에서 데이터를 내보내려고합니다. 데이터 테이블의 데이터에서 outputStream을 만들었습니다. 이제이 OutputStream을 브라우저로 보내고 저장하도록합니다. 어떻게해야합니까? 브라우저로 OutputStream을 보내고 브라우저가 저장하도록하십시오

OutputStream out = myMthodToCreateOutPutStream();

FileOutputStream stream = new FileOutputStream(new File(PATH));

이제 브라우저로이 out을 저장하는 방법.

답변

12

데이터를 읽는 곳이 명확하지 않습니다. 데이터를 읽으려면 InputStream을 작성해야합니다.

그런 다음, 먼저 당신이 필요로하는 어떤 파일 이름

HttpServletResponse.setHeader("Content-Disposition", "attachment; filename=datafile.xls"); 

사용하는 응답 헤더를 설정해야합니다.

response.setContentType("application/vnd.ms-excel"); 

는 당신이 필요로하는 마임 타입을 사용

그런 다음 마임 타입을 설정합니다.

그런 다음 자신의 OutputStream을 얻을 수있는 응답 객체를 사용할 필요가 - 이제

OutputStream outStream = response.getOutputStream(); 

에 대한 쓰기 :

byte[] buf = new byte[4096]; 
int len = -1; 

//Write the file contents to the servlet response 
//Using a buffer of 4kb (configurable). This can be 
//optimized based on web server and app server 
//properties 
while ((len = inStream.read(buf)) != -1) { 
    outStream.write(buf, 0, len); 
} 

outStream.flush(); 
outStream.close(); 
+0

을이 ans와 내 문제를 해결하기 위해 나에게 힌트를 제공합니다 .. 감사합니다 많이 –

관련 문제