[JSP] JSP로 서버에 올라가 있는 PDF파일 바로 열기

2020. 11. 29. 00:29프론트엔드/JSP

728x90

서버경로에 pdf파일이 업로드 되어 있을 때, 해당 경로에 있는 pdf파일을 jsp에서 바로 여는 방법

test.jsp 호출시 설정한 경로내에 있는 pdf파일을 바로 오픈

<!--test.jsp-->

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.FileInputStream" %>   
<%@ page import="java.io.BufferedOutputStream" %> 
<%@ page import="java.io.File" %> 
<%@ page import="java.io.IOException" %>         
 <%
 
FileInputStream fis = null;
BufferedOutputStream bos = null;

//아래 두줄의 초기화 코드를 넣지 않으면 'java.lang.IllegalStateException' 발생 
out.clear();
out = pageContext.pushBody();
try{
	//여기서 역슬래시 하나만 사용할 경우 에러 발생
    String fileName = "이클립스서버경로\\abc.pdf";
    File file = new File(fileName);
    
    // 보여주기
    response.setContentType("application/pdf");
    response.setHeader("Content-Description", "JSP Generated Data");
    // 다운로드
    //response.addHeader("Content-Disposition", "attachment; filename = " + file.getName() + ".pdf");
 
    fis = new FileInputStream(file);
    int size = fis.available();
    
    byte[] buf = new byte[size];
    int readCount = fis.read(buf);
 
    response.flushBuffer();
 
    bos = new BufferedOutputStream(response.getOutputStream());
    bos.write(buf, 0, readCount);
    bos.flush();
} catch(Exception e) {
    response.setContentType("text/html;charset=euc-kr");
    out.println("<script language='javascript'>");
    out.println("alert('파일 오픈 중 오류가 발생하였습니다.');");
    out.println("</script>");
    e.printStackTrace();
} finally{
    try{
        if(fis != null) fis.close();
        if(bos != null) bos.close();
    } catch(IOException e){
        e.printStackTrace();
    }    
}
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

 

만약 특정 jsp에서 버튼을 클릭시 pdf파일을 읽는 JSP를 열고 싶다면 javascript 'window.open()' 사용하여 'test.jsp'열기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
    <script src="asset/jQuery/jquery-1.12.4.min.js"></script>
    <script src="asset/js/index.js"></script>
</head>

<script>
$(function(){
	$pdfOpen = $('#pdfOpen'),
	$pdfOpen.click(function(){
	window.open('test.jsp');
	});
})
</script>
<button id="pdfOpen">pdf열기</button>
</body>
</html>

 

728x90