diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/flight/template/service/TemplateService.java b/pav-server/src/main/java/com/palnet/biz/api/bas/flight/template/service/TemplateService.java index a908e6b..f41becc 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/flight/template/service/TemplateService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/flight/template/service/TemplateService.java @@ -1,16 +1,13 @@ package com.palnet.biz.api.bas.flight.template.service; import java.io.File; -import java.io.FileOutputStream; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.io.StringReader; -import java.nio.charset.Charset; -import java.nio.file.Files; -import java.nio.file.Paths; +import java.io.OutputStream; +import java.net.URLEncoder; import java.time.Instant; -import java.util.Map; -import java.util.Map.Entry; +import java.util.Objects; import javax.servlet.http.HttpServletResponse; import javax.transaction.Transactional; @@ -117,9 +114,45 @@ public class TemplateService { public void fileDownload(int fileSno, HttpServletResponse response) { ComFileBas comFileBas = comFileBasRepository.findById(fileSno).orElse(null); - if(comFileBas == null) throw new CustomException(ErrorCode.DATA_NOTFIND); - - log.info("comFileBas -> {}", comFileBas); + if(comFileBas == null) throw new CustomException(ErrorCode.DATA_NOTFIND); + + InputStream inputStream = null; + OutputStream outputStream = null; + + try { + File pdfFile = new File(comFileBas.getFilePath() + comFileBas.getFileSaveNm()); + inputStream = new FileInputStream(pdfFile); + + String fileOriName = comFileBas.getFileOriNm(); + fileOriName = URLEncoder.encode(comFileBas.getFileOriNm(), "UTF-8"); + + response.setContentType("application/octet-stream"); + response.setCharacterEncoding("UTF-8"); + response.setHeader("Content-Disposition", "attachment; filename=\"" + fileOriName + "\""); + response.setContentLengthLong(Long.parseLong(comFileBas.getFileSize())); + response.setStatus(HttpServletResponse.SC_OK); + + outputStream = response.getOutputStream(); + + byte[] buffer = new byte[1024]; //1KB 설정 + int length; + + while((length = inputStream.read(buffer)) != -1) { + outputStream.write(buffer); + } + + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + Objects.requireNonNull(outputStream).flush(); + outputStream.close(); + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + } }