업무를 하다보면 종종 Web에서 서버에 저장되어 있는 파일들을 보여주거나 다운로드할 일이 생깁니다.
그럴때 간단하게 하는 방법입니다.
일단 화면 부분에 a태그를 만듭니다.
<a href="javascript:;" id="btnPdf" onclick="viewPdf('값1', '값2')">불러오기</a>
다음은 script 부분 입니다.
function viewPdf(값1, 값2) {
windows = window.open("/view/viewPdf", "viewPdf");
let $form = $('<form></form>');
$form.attr('action', "/view/viewPdf");
$form.attr('method', 'get');
$form.attr('target', 'viewPdf');
$form.appendTo('body');
let data_1 = $('<input type="hidden" value="' + 값1+ '" name="test1">');
let data_2 = $('<input type="hidden" value="' + 값2+ '" name="test2">');
$form.append(data_1);
$form.append(data_2);
$form.submit();
return false;
}
다음은 Java 부분 입니다.
FileInputStream fis = null;
BufferedOutputStream bos = null;
try {
File pdfViewFile = new File(파일 저장 경로);
response.setContentType("application/pdf");
String fileName = URLEncoder.encode("PDF파일", "UTF-8");
// 해당부분을 attachment; 로 하면 바로 다운로드, inline; 으로 하면 뷰어로 보여지게 됩니다.
response.setHeader("Content-disposition", "inline; filename=" + fileName + ".pdf");
fis = new FileInputStream(pdfViewFile);
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) {
e.printStackTrace();
} finally {
try {
if (fis != null) fis.close();
if (bos != null) bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
아래 블로그를 참조하여 만들었습니다.
'개발자 > Java' 카테고리의 다른 글
| 일반적 For문과 향상된 For문 (1) | 2025.06.13 |
|---|---|
| [Java] Jaspersoft Studio VO를 활용한 List 출력 (0) | 2024.12.13 |
| POI를 이용한 대용량 엑셀 다운로드(SXSSF 방식 + sqlSessionFactory + ResultHandler + VO 활용) (1) | 2024.10.18 |
| [Java] 숫자, 금액을 한글로 변환 (0) | 2024.06.26 |
| [Java] Collections.frequency() 사용법 (0) | 2024.06.13 |