2013-03-19 3 views
2

GWT 및 일반 웹 응용 프로그램을 처음 사용합니다.GWT : 파일 다운로드 구현 방법

GWT 웹 응용 프로그램을 만들고 있습니다. 웹 페이지에서 버튼을 클릭하여 파일을 다운로드하는 기능이 있습니다. 불행히도 파일 자체는 물리적으로 서버 측에 있지 않습니다. 서버 측은 파일의 InputStream을 얻기 위해 다른 웹 서비스에 대한 REST 호출을 통해이를 가져와야합니다.

내 질문은이 :

  1. 브라우저 다운로드 시작할 수 있도록 어떻게 클라이언트 측에 스트림을 전달할 수 있습니다?
  2. 시작하기 전에 파일을 서버에 물리적으로 작성해야합니까?

많은 감사

편집 : 나는이 예제를 발견 :이 예에서 How to use GWT when downloading Files with a Servlet?

는 파일이 물리적으로 서버 측에 있습니다. 스트림을 통해 웹 서비스에서 가져온 파일은 매우 커서 GWT 서버 측에 저장하고 싶지 않습니다. 어떤 제안?

+0

입력 스트림을 outputstream에 푸시하는 방법을 사용해 보셨습니까? http://stackoverflow.com/questions/13725198/how-to-make-user-can-download-file-in-client-side-google-web-toolkit/ – SSR

+0

확인해보세요. http://stackoverflow.com/questions/15458525/how-to-show-file-in-gwt-client-side-instead-of-downloading/15467029#15467029 – Dipak

답변

3

위 예제와 같이 서블릿을 사용합니다. 헤더와 파일 이름이 적절한 유형으로 설정되어 있는지 확인하십시오. (파일 이름은 올바른 끝으로 끝나야합니다.)

// process the data (In your case go get it) 
byte[] data = generateReturnBuffer(); 
// do not cache 
response.setHeader("Expires", "0"); 
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0"); 
response.setHeader("Pragma", "public"); 
// content length is needed for MSIE 
response.setContentLength(data.length); 
// set the filename and the type 
response.setContentType("application/pdf"); 
response.addHeader("Content-Disposition", "attachment;filename=" + "fileName.pdf"); 
ServletOutputStream out = resp.getOutputStream(); 
out.write(data); 
out.flush(); 

여기서 응답은 서블릿 HttpServletResponse입니다.
Look here for the valid mime types.
특정 시점에 Internet Explorer의 특정 버전에 파일 길이가 필요하기 때문에 파일이나 메모리에 데이터를 저장해야합니다. 시 종료

0

변환 preffered 형식의 InputStream 및 자동 삭제

File f = File.createTempFile("tmp", "yourformat(.txt)", new File("C:/")); 



// deletes file when the virtual machine terminate 
f.deleteOnExit(); 

사용자 에디터를 이용해하는 임시 파일을 만드는 임시 파일 생성합니다.

+1

검색어에 구체적으로 언급되지 않은 내용이 있습니다. 크기가 클 때 서버 측에 파일을 저장합니다. – SSR