파일 다운로드 기능 문의
- 작성자 :
- 개*자
- 작성일 :
- 2018-10-16 15:50:42
- 조회수 :
- 1,604
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
안녕하십니까. 파일 다운로드 기능 문의드립니다.
현재 egoveframework 3.2 환경에서 개발 중입니다.(WAS 는 Jeus, JDK 1_6_046)
Ajax로 특정 controller 실행 시 파일 생성 후, 파일 다운로드 jsp 를 호출하여
생성된 파일을 다운로드 하s는 기능을 개발하고 있는데,파일 다운로드가 동작하지 않습니다.
- 기대하는 결과는 컨트롤러 실행 후, 브라우저 아래에 파일 다운로드 실행/저장 이 표시되는 것입니다.
로컬에서 실행해보면 jsp 가 호출되어 로그가 출력되는 것을 확인할 수 있으며,
파일 다운로드 jsp는 다음과 같이 구성되어 있습니다.
response.setHeader("Content-Type", "application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=test.xls;");
response.setHeader("Content-Transfer-Encoding", "binary);
response.setHeader("Pragma", "no-cache;");
response.setHeader("Expires", "-1");
BufferedOutputStream osStream = new BufferedOutputStream(response.getOutputStream());
int numRead;
while((numRead=fin.read(buff, 0, buff.length != -1){
osStream.write( buff, 0, numRead);
}
상기 jsp 와 유사한 기능을 controller 에서 구현해보아도 다운로드 기능이 동작하지 않습니다.
EgovFileDownloadController.java 를 참고해서 구현해보았습니다
Controller 에서 파일 처리 후 해당 Controller 안에서 아래의
"EgovFileDownloadController.java 에서 참고한 부분"을 추가하여
코딩하였는데도 파일 다운로드가 되지 않았습니다.
Controller 는 정상 호출되고, 파일 처리도 정상입니다.
별다른 오류 메시지 없이 다운로드가 되지 않습니다.
[ dispatcher-servlet.xml resolver 관련 설정 ]
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"id="viewResolver" p:order="0" />
<bean class="org.springframework.web.servlet.view.UriBasedViewResolver" p:order="1"
p:viewClass="org.springframework.web.servlet.view.JstlView"
p:prefix="/WEB-INF/jsp/kics/se/" p:suffix=".jsp" />
servlet-dispatcher.xml 에서 resolver나 bean 등 설정을 해야 하는 건지,
다른 어떤 부분을 점검해야 하는지 알려주시면 감사하겠습니다..
현재 egoveframework 3.2 환경에서 개발 중입니다.(WAS 는 Jeus, JDK 1_6_046)
Ajax로 특정 controller 실행 시 파일 생성 후, 파일 다운로드 jsp 를 호출하여
생성된 파일을 다운로드 하s는 기능을 개발하고 있는데,파일 다운로드가 동작하지 않습니다.
- 기대하는 결과는 컨트롤러 실행 후, 브라우저 아래에 파일 다운로드 실행/저장 이 표시되는 것입니다.
로컬에서 실행해보면 jsp 가 호출되어 로그가 출력되는 것을 확인할 수 있으며,
파일 다운로드 jsp는 다음과 같이 구성되어 있습니다.
response.setHeader("Content-Type", "application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=test.xls;");
response.setHeader("Content-Transfer-Encoding", "binary);
response.setHeader("Pragma", "no-cache;");
response.setHeader("Expires", "-1");
BufferedOutputStream osStream = new BufferedOutputStream(response.getOutputStream());
int numRead;
while((numRead=fin.read(buff, 0, buff.length != -1){
osStream.write( buff, 0, numRead);
}
상기 jsp 와 유사한 기능을 controller 에서 구현해보아도 다운로드 기능이 동작하지 않습니다.
EgovFileDownloadController.java 를 참고해서 구현해보았습니다
Controller 에서 파일 처리 후 해당 Controller 안에서 아래의
"EgovFileDownloadController.java 에서 참고한 부분"을 추가하여
코딩하였는데도 파일 다운로드가 되지 않았습니다.
Controller 는 정상 호출되고, 파일 처리도 정상입니다.
별다른 오류 메시지 없이 다운로드가 되지 않습니다.
[ dispatcher-servlet.xml resolver 관련 설정 ]
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"id="viewResolver" p:order="0" />
<bean class="org.springframework.web.servlet.view.UriBasedViewResolver" p:order="1"
p:viewClass="org.springframework.web.servlet.view.JstlView"
p:prefix="/WEB-INF/jsp/kics/se/" p:suffix=".jsp" />
servlet-dispatcher.xml 에서 resolver나 bean 등 설정을 해야 하는 건지,
다른 어떤 부분을 점검해야 하는지 알려주시면 감사하겠습니다..
A
안녕하세요.
표준프레임워크센터 입니다.
우선 파일 다운로드시에는
jsp파일을 사용하지 않습니다.
jsp파일은 html을 표현하는 Servlet규약이므로
텍스트 기반입니다.
파일 다운로드는 바이너리 스트림기반으로
전달하여야 합니다.
따라서 Controller에서 웹브라우저로 전송하는
모든 스트림 전송 처리를 하시면 됩니다.
dispatcher-servlet.xml을 언급하신 내용은
URL과 Controller를 맵핑하는 스프링의 핸들러 맵핑 부분입니다.
기존에 ~~~.do를 호출했을때 화면이 정상적으로 나왔다면
해당부분은 수정할 필요는 없습니다.
결론은
Controller에서 파일을 읽어
스트림으로 전송하는 로직을 구현하시면 됩니다.
감사합니다.
표준프레임워크센터 입니다.
우선 파일 다운로드시에는
jsp파일을 사용하지 않습니다.
jsp파일은 html을 표현하는 Servlet규약이므로
텍스트 기반입니다.
파일 다운로드는 바이너리 스트림기반으로
전달하여야 합니다.
따라서 Controller에서 웹브라우저로 전송하는
모든 스트림 전송 처리를 하시면 됩니다.
dispatcher-servlet.xml을 언급하신 내용은
URL과 Controller를 맵핑하는 스프링의 핸들러 맵핑 부분입니다.
기존에 ~~~.do를 호출했을때 화면이 정상적으로 나왔다면
해당부분은 수정할 필요는 없습니다.
결론은
Controller에서 파일을 읽어
스트림으로 전송하는 로직을 구현하시면 됩니다.
감사합니다.