File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package egovframework.com.cmm.web;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import egovframework.com.cmm.service.EgovFileMngService;
import egovframework.com.cmm.service.FileVO;
import egovframework.let.itsm.asset.service.AssetVO;
import egovframework.let.itsm.audit.service.AuditItemVO;
import egovframework.let.itsm.audit.service.AuditManageService;
import egovframework.let.itsm.audit.service.AuditVO;
import egovframework.let.itsm.bizCntrt.service.BizCntrtVO;
import egovframework.let.itsm.bizCntrt.service.BizItemVO;
import egovframework.let.itsm.edu.service.EduVO;
import egovframework.let.itsm.ip.service.IpVO;
import egovframework.let.itsm.per.service.PeriFile;
import egovframework.let.itsm.per.service.PerispVO;
import egovframework.let.itsm.per.service.PeritemVO;
import egovframework.let.itsm.security.service.SecVO;
import egovframework.let.itsm.sla.service.SlaAutItemVO;
import egovframework.let.itsm.sla.service.SlaAutscitecVO;
/**
* 파일 다운로드를 위한 컨트롤러 클래스
* @author 공통서비스개발팀 이삼섭
* @since 2009.06.01
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2009.3.25 이삼섭 최초 생성
*
* Copyright (C) 2009 by MOPAS All right reserved.
* </pre>
*/
@Controller
public class EgovFileDownloadController {
@Resource(name = "EgovFileMngService")
private EgovFileMngService fileService;
@Resource(name = "auditManageService")
private AuditManageService auditManageService;
private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileDownloadController.class);
/**
* 브라우저 구분 얻기.
*
* @param request
* @return
*/
private String getBrowser(HttpServletRequest request) {
String header = request.getHeader("User-Agent");
if (header.indexOf("MSIE") > -1) {
return "MSIE";
} else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지
return "Trident";
} else if (header.indexOf("Chrome") > -1) {
return "Chrome";
} else if (header.indexOf("Opera") > -1) {
return "Opera";
}
return "Firefox";
}
/**
* Disposition 지정하기.
*
* @param filename
* @param request
* @param response
* @throws Exception
*/
private void setDisposition(String filename, HttpServletRequest request, HttpServletResponse response) throws Exception {
String browser = getBrowser(request);
String dispositionPrefix = "attachment; filename=";
String encodedFilename = null;
if (browser.equals("MSIE")) {
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
} else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
} else if (browser.equals("Firefox")) {
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
} else if (browser.equals("Opera")) {
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
} else if (browser.equals("Chrome")) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < filename.length(); i++) {
char c = filename.charAt(i);
if (c > '~') {
sb.append(URLEncoder.encode("" + c, "UTF-8"));
} else {
sb.append(c);
}
}
encodedFilename = sb.toString();
} else {
//throw new RuntimeException("Not supported browser");
throw new IOException("Not supported browser");
}
response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename);
if ("Opera".equals(browser)) {
response.setContentType("application/octet-stream;charset=UTF-8");
}
}
/**
* 첨부파일로 등록된 파일에 대하여 다운로드를 제공한다.
*
* @param commandMap
* @param response
* @throws Exception
*/
@RequestMapping(value = "/cmm/fms/FileDown.do")
public void cvplFileDownload(@RequestParam Map<String, Object> commandMap
, HttpServletRequest request
, HttpServletResponse response
, HttpSession session
) throws Exception {
String atchFileId = (String) commandMap.get("atchFileId");
String fileSn = (String) commandMap.get("fileSn");
String sessionFileId = (String)session.getAttribute("atchFileId");
if(sessionFileId != null) {
if(!sessionFileId.equals(atchFileId)) {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter printwriter = response.getWriter();
printwriter.println("<script>");
printwriter.println("alert('허가되지 않은 서비스 입니다.')");
printwriter.println("self.close();");
printwriter.println("</script>");
printwriter.flush();
printwriter.close();
return ;
}
}
/*Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();*/
/*if (isAuthenticated) {*/
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(atchFileId);
fileVO.setFileSn(fileSn);
FileVO fvo = fileService.selectFileInf(fileVO);
if(fvo == null){
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br></h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
return ;
}
File uFile = new File(fvo.getFileStreCours(), fvo.getStreFileNm());
long fSize = uFile.length();
if (fSize > 0) {
String mimetype = "application/x-msdownload";
response.setContentType(mimetype);
setDisposition(fvo.getOrignlFileNm(), request, response);
//response.setContentLength(fSize);
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (out != null) {
try {
out.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
} else {
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br>" + fvo.getOrignlFileNm() + "</h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
/*}*/
}
/**
* 첨부파일로 등록된 PDF파일을 미리보기 한다.
*
* @param commandMap
* @param response
* @throws Exception
*/
@RequestMapping(value = "/cmm/fms/pdfView.do")
public void pdfView(@RequestParam Map<String, Object> commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception {
String atchFileId = (String) commandMap.get("atchFileId");
String fileSn = (String) commandMap.get("fileSn");
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(atchFileId);
fileVO.setFileSn(fileSn);
FileVO fvo = fileService.selectFileInf(fileVO);
if(fvo == null){
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br></h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
return ;
}
FileInputStream fis = null;
BufferedOutputStream bos = null;
try{
/* String pdfFileName = "C:/upload/TEST.pdf";
File pdfFile = new File(pdfFileName);*/
File pdfFile = new File(fvo.getFileStreCours(), fvo.getStreFileNm());
//클라이언트 브라우져에서 바로 보는 방법(헤더 변경)
response.setContentType("application/pdf");
//★ 이 구문이 있으면 [다운로드], 이 구문이 없다면 바로 target 지정된 곳에 view 해줍니다.
//response.addHeader("Content-Disposition", "attachment; filename="+pdfFile.getName()+".pdf");
//파일 읽고 쓰는 건 일반적인 Write방식이랑 동일합니다. 다만 reponse 출력 스트림 객체에 write.
fis = new FileInputStream(pdfFile);
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(); //close는 꼭! 반드시!
if (bos != null) bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/*감사/담당자 명함 다운로드*/
@RequestMapping(value = "/cmm/fms/ItsmFileDown.do")
public void itsmFileDown(@RequestParam Map<String, Object> commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception {
String atchFileId = (String) commandMap.get("atchFileId");
String fileSn = (String) commandMap.get("fileSn");
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(atchFileId);
fileVO.setFileSn(fileSn);
FileVO fvo = fileService.selectItsmFileInf(fileVO);
if(fvo == null){
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br></h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
return ;
}
File uFile = new File(fvo.getFileStreCours(), fvo.getStreFileNm());
long fSize = uFile.length();
if (fSize > 0) {
String mimetype = "application/x-msdownload";
response.setContentType(mimetype);
setDisposition(fvo.getOrignlFileNm(), request, response);
//response.setContentLength(fSize);
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (out != null) {
try {
out.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
} else {
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br>" + fvo.getOrignlFileNm() + "</h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
}
/*정기점검 첨부파일 다운로드*/
@RequestMapping(value = "/cmm/fms/perFileDown.do")
public void perFileDown(@RequestParam Map<String, Object> commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception {
String atchFileId = (String) commandMap.get("atchFileId");
String fileSn = (String) commandMap.get("fileSn");
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(atchFileId);
fileVO.setFileSn(fileSn);
FileVO fvo = new FileVO();
if(null != commandMap.get("dbType")){
if("ipFile".equals((String) commandMap.get("dbType"))) {
fvo = fileService.selectItsmIpFileInf(fileVO);
}
}else {
fvo = fileService.selectItsmperFileInf(fileVO);
}
if(fvo == null){
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br></h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
return ;
}
File uFile = new File(fvo.getFileStreCours(), fvo.getStreFileNm());
long fSize = uFile.length();
if (fSize > 0) {
String mimetype = "application/x-msdownload";
response.setContentType(mimetype);
setDisposition(fvo.getOrignlFileNm(), request, response);
//response.setContentLength(fSize);
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (out != null) {
try {
out.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
} else {
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br>" + fvo.getOrignlFileNm() + "</h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
}
/* 파일 다운로드 - 일괄 zip 압축(기본)*/
@RequestMapping(value = "/cmm/fms/fileDownZipTest.do")
public void fileDownZipTest(@RequestParam Map<String, Object> commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception {
// String atchFileId = (String) commandMap.get("atchFileId");
String orgnZipNm = "test.zip"; // 압축 파일명 필요..
String atchFileId = "FILE_000000000015459";
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(atchFileId);
List<FileVO> fvoList = fileService.selectFileInfs(fileVO); // 해당 기능에 맞게 파일 조회
if(fvoList.size() == 0){
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br></h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
return ;
}
// buffer size
int size = 1024;
byte[] buf = new byte[size];
String outZipNm = fvoList.get(0).getFileStreCours()+File.separator + orgnZipNm;
FileInputStream fis = null;
ZipArchiveOutputStream zos = null;
BufferedInputStream bis = null;
try {
// Zip 파일생성
zos = new ZipArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(outZipNm)));
for ( FileVO vo : fvoList ){
zos.setEncoding("UTF-8");
//buffer에 해당파일의 stream을 입력한다.
fis = new FileInputStream(vo.getFileStreCours() + "/" + vo.getStreFileNm());
bis = new BufferedInputStream(fis,size);
//zip에 넣을 다음 entry 를 가져온다.
zos.putArchiveEntry(new ZipArchiveEntry(vo.getOrignlFileNm()));
//준비된 버퍼에서 집출력스트림으로 write 한다.
int len;
while((len = bis.read(buf,0,size)) != -1) zos.write(buf,0,len);
bis.close();
fis.close();
zos.closeArchiveEntry();
}
zos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
if( zos != null ) zos.close();
if( fis != null ) fis.close();
if( bis != null ) bis.close();
}
File uFile = new File(fvoList.get(0).getFileStreCours(), orgnZipNm);
long fSize = uFile.length();
if (fSize > 0) {
String mimetype = "application/x-msdownload";
response.setContentType(mimetype);
setDisposition(orgnZipNm, request, response);
//response.setContentLength(fSize);
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (out != null) {
try {
out.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
//파일 다운로드 후 파일 삭제
File delFile = new File(outZipNm);
delFile.delete();
} else {
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br>" + orgnZipNm + "</h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
}
/* 파일 다운로드 - 일괄 zip 압축(보안관리)*/
@RequestMapping(value = "/cmm/fms/secFileDownZip.do")
public void secFileDownZip(@RequestParam Map<String, Object> commandMap, @ModelAttribute("sec") SecVO secVO,
HttpServletRequest request, HttpServletResponse response) throws Exception {
//파일ID를 리스트에 담기
List<String> atchFileIdList = new ArrayList<String>();
//split을 이용해 아이디를 각자 배열에 담기
String[] splitStr =((String) commandMap.get("atchFileId")).split(",");
//리스트에 아이디 담기
for(int i=0; i<splitStr.length; i++) {
atchFileIdList.add(splitStr[i]);
}
//zip파일 이름 (메뉴명+글 제목명 +날짜)
String menuNm = "";
if(secVO.getSecCd().equals("02")) {
menuNm = "보안정책";
}else if(secVO.getSecCd().equals("03")) {
menuNm = "보안서약서";
}else if(secVO.getSecCd().equals("04")){
menuNm = "모의훈련";
}
String orgnZipNm = menuNm+"_"+secVO.getSecSj()+"_"+secVO.getFrstRegistPnttm().substring(0,10)+".zip"; // 압축 파일명 필요..
FileVO fileVO = new FileVO();
fileVO.setAtchFileIdList(atchFileIdList);
List<FileVO> fvoList = fileService.selectSecFileInfs(fileVO); // 해당 기능에 맞게 파일 조회
if(fvoList.size() == 0){
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br></h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
return ;
}
// buffer size
int size = 1024;
byte[] buf = new byte[size];
String outZipNm = fvoList.get(0).getFileStreCours()+File.separator + orgnZipNm;
FileInputStream fis = null;
ZipArchiveOutputStream zos = null;
BufferedInputStream bis = null;
try {
// Zip 파일생성
zos = new ZipArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(outZipNm)));
for ( FileVO vo : fvoList ){
zos.setEncoding("UTF-8");
//buffer에 해당파일의 stream을 입력한다.
fis = new FileInputStream(vo.getFileStreCours() + "/" + vo.getStreFileNm());
bis = new BufferedInputStream(fis,size);
//zip에 넣을 다음 entry 를 가져온다.
zos.putArchiveEntry(new ZipArchiveEntry(vo.getOrignlFileNm()));
//준비된 버퍼에서 집출력스트림으로 write 한다.
int len;
while((len = bis.read(buf,0,size)) != -1) zos.write(buf,0,len);
bis.close();
fis.close();
zos.closeArchiveEntry();
}
zos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
if( zos != null ) zos.close();
if( fis != null ) fis.close();
if( bis != null ) bis.close();
}
File uFile = new File(fvoList.get(0).getFileStreCours(), orgnZipNm);
long fSize = uFile.length();
if (fSize > 0) {
String mimetype = "application/x-msdownload";
response.setContentType(mimetype);
setDisposition(orgnZipNm, request, response);
//response.setContentLength(fSize);
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (out != null) {
try {
out.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
//파일 다운로드 후 파일 삭제
File delFile = new File(outZipNm);
delFile.delete();
} else {
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br>" + orgnZipNm + "</h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
}
/* 파일 다운로드 - 일괄 zip 압축(사업관리)*/
@RequestMapping(value = "/cmm/fms/bizFileDownZip.do")
public void bizFileDownZip(@RequestParam Map<String, Object> commandMap, @ModelAttribute("bizCntrtVO") BizCntrtVO bizCntrtVO,
BizItemVO bizItemVO,
HttpServletRequest request, HttpServletResponse response) throws Exception {
//파일ID를 리스트에 담기
List<String> atchFileIdList = new ArrayList<String>();
//split을 이용해 아이디를 각자 배열에 담기
String[] splitStr =bizItemVO.getAtchFileId().split(",");
//리스트에 아이디 담기
for(int i=0; i<splitStr.length; i++) {
atchFileIdList.add(splitStr[i]);
}
//zip파일 이름 (메뉴명+글 제목명 +날짜)
String menuNm = "사업관리";
String orgnZipNm = menuNm+"_"+bizCntrtVO.getBizNm()+"_"+bizCntrtVO.getFrstRegistPnttm()+".zip"; // 압축 파일명 필요..
FileVO fileVO = new FileVO();
fileVO.setAtchFileIdList(atchFileIdList);
List<FileVO> fvoList = fileService.selectBizFileInfs(fileVO); // 해당 기능에 맞게 파일 조회
if(fvoList.size() == 0){
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br></h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
return ;
}
// buffer size
int size = 1024;
byte[] buf = new byte[size];
String outZipNm = fvoList.get(0).getFileStreCours()+File.separator + orgnZipNm;
FileInputStream fis = null;
ZipArchiveOutputStream zos = null;
BufferedInputStream bis = null;
try {
// Zip 파일생성
zos = new ZipArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(outZipNm)));
for ( FileVO vo : fvoList ){
zos.setEncoding("UTF-8");
//buffer에 해당파일의 stream을 입력한다.
fis = new FileInputStream(vo.getFileStreCours() + "/" + vo.getStreFileNm());
bis = new BufferedInputStream(fis,size);
//zip에 넣을 다음 entry 를 가져온다.
zos.putArchiveEntry(new ZipArchiveEntry(vo.getOrignlFileNm()));
//준비된 버퍼에서 집출력스트림으로 write 한다.
int len;
while((len = bis.read(buf,0,size)) != -1) zos.write(buf,0,len);
bis.close();
fis.close();
zos.closeArchiveEntry();
}
zos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
if( zos != null ) zos.close();
if( fis != null ) fis.close();
if( bis != null ) bis.close();
}
File uFile = new File(fvoList.get(0).getFileStreCours(), orgnZipNm);
long fSize = uFile.length();
if (fSize > 0) {
String mimetype = "application/x-msdownload";
response.setContentType(mimetype);
setDisposition(orgnZipNm, request, response);
//response.setContentLength(fSize);
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (out != null) {
try {
out.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
//파일 다운로드 후 파일 삭제
File delFile = new File(outZipNm);
delFile.delete();
} else {
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br>" + orgnZipNm + "</h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
}
/* 파일 다운로드 - 일괄 zip 압축(개인정보실태평가,국정원실태평가,외부감사)*/
@RequestMapping(value = "/cmm/fms/evalFileDownZip.do")
public void evalFileDownZip(@RequestParam Map<String, Object> commandMap
, @ModelAttribute("auditVO") AuditVO auditVO,
@ModelAttribute("auditItemVO") AuditItemVO auditItemVO
, EduVO eduVO,
HttpServletRequest request, HttpServletResponse response) throws Exception {
//파일ID를 리스트에 담기
List<String> atchFileIdList = new ArrayList<String>();
//split을 이용해 아이디를 각자 배열에 담기
String[] splitStr =auditItemVO.getAtchFileIdDown().split(",");
//리스트에 아이디 담기
for(int i=0; i<splitStr.length; i++) {
atchFileIdList.add(splitStr[i]);
}
//zip파일 이름 (메뉴명+글 제목명 +날짜)
String menuNm = "";
if(auditVO.getAutCd().equals("21 ")) {
menuNm = "개인정보실태평가";
}else if(auditVO.getAutCd().equals("03")) {
menuNm = "국정원실태평가";
}else if(auditVO.getAutCd().equals("01")) {
menuNm = "외부감사";
}else if(eduVO.getAutCd().equals("02")) {
if(eduVO.getAutConFlag().equals("01")) {
menuNm = "교육계획";
}else if(eduVO.getAutConFlag().equals("02")) {
menuNm = "회의계획";
}else if(eduVO.getAutConFlag().equals("03")) {
menuNm = "연간교육계획";
}
}
String orgnZipNm = menuNm+"_"+auditVO.getAutSj()+"_"+auditVO.getFrstRegistPnttm().substring(0,10)+".zip"; // 압축 파일명 필요..
FileVO fileVO = new FileVO();
fileVO.setAtchFileIdList(atchFileIdList);
List<FileVO> fvoList = fileService.selectEvalFileInfs(fileVO); // 해당 기능에 맞게 파일 조회
if(fvoList.size() == 0){
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br></h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
return ;
}
// buffer size
int size = 1024;
byte[] buf = new byte[size];
String outZipNm = fvoList.get(0).getFileStreCours()+File.separator + orgnZipNm;
FileInputStream fis = null;
ZipArchiveOutputStream zos = null;
BufferedInputStream bis = null;
try {
// Zip 파일생성
zos = new ZipArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(outZipNm)));
for ( FileVO vo : fvoList ){
zos.setEncoding("UTF-8");
//buffer에 해당파일의 stream을 입력한다.
fis = new FileInputStream(vo.getFileStreCours() + "/" + vo.getStreFileNm());
bis = new BufferedInputStream(fis,size);
//zip에 넣을 다음 entry 를 가져온다.
zos.putArchiveEntry(new ZipArchiveEntry(vo.getOrignlFileNm()));
//준비된 버퍼에서 집출력스트림으로 write 한다.
int len;
while((len = bis.read(buf,0,size)) != -1) zos.write(buf,0,len);
bis.close();
fis.close();
zos.closeArchiveEntry();
}
zos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
if( zos != null ) zos.close();
if( fis != null ) fis.close();
if( bis != null ) bis.close();
}
File uFile = new File(fvoList.get(0).getFileStreCours(), orgnZipNm);
long fSize = uFile.length();
if (fSize > 0) {
String mimetype = "application/x-msdownload";
response.setContentType(mimetype);
setDisposition(orgnZipNm, request, response);
//response.setContentLength(fSize);
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (out != null) {
try {
out.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
//파일 다운로드 후 파일 삭제
File delFile = new File(outZipNm);
delFile.delete();
} else {
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br>" + orgnZipNm + "</h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
}
/* 파일 다운로드 - 일괄 zip 압축(교육회의관리)*/
@RequestMapping(value = "/cmm/fms/eduFileDownZip.do")
public void eduFileDownZip(@RequestParam Map<String, Object> commandMap
, @ModelAttribute("auditVO") AuditVO auditVO,
@ModelAttribute("auditItemVO") AuditItemVO auditItemVO
, EduVO eduVO,
HttpServletRequest request, HttpServletResponse response) throws Exception {
//파일ID를 리스트에 담기
List<String> atchFileIdList = new ArrayList<String>();
//split을 이용해 아이디를 각자 배열에 담기
String[] splitStr =auditItemVO.getAtchFileId().split(",");
//리스트에 아이디 담기
for(int i=0; i<splitStr.length; i++) {
atchFileIdList.add(splitStr[i]);
}
//zip파일 이름 (메뉴명+글 제목명 +날짜)
String menuNm = "";
if(auditVO.getAutCd().equals("21 ")) {
menuNm = "개인정보실태평가";
}else if(auditVO.getAutCd().equals("03")) {
menuNm = "국정원실태평가";
}else if(auditVO.getAutCd().equals("01")) {
menuNm = "외부감사";
}else if(eduVO.getAutCd().equals("02")) {
if(eduVO.getAutConFlag().equals("01")) {
menuNm = "교육계획";
}else if(eduVO.getAutConFlag().equals("02")) {
menuNm = "회의계획";
}else if(eduVO.getAutConFlag().equals("03")) {
menuNm = "연간교육계획";
}
}
String orgnZipNm = menuNm+"_"+auditVO.getAutSj()+"_"+auditVO.getFrstRegistPnttm().substring(0,10)+".zip"; // 압축 파일명 필요..
FileVO fileVO = new FileVO();
fileVO.setAtchFileIdList(atchFileIdList);
List<FileVO> fvoList = fileService.selectEvalFileInfs(fileVO); // 해당 기능에 맞게 파일 조회
if(fvoList.size() == 0){
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br></h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
return ;
}
// buffer size
int size = 1024;
byte[] buf = new byte[size];
String outZipNm = fvoList.get(0).getFileStreCours()+File.separator + orgnZipNm;
FileInputStream fis = null;
ZipArchiveOutputStream zos = null;
BufferedInputStream bis = null;
try {
// Zip 파일생성
zos = new ZipArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(outZipNm)));
for ( FileVO vo : fvoList ){
zos.setEncoding("UTF-8");
//buffer에 해당파일의 stream을 입력한다.
fis = new FileInputStream(vo.getFileStreCours() + "/" + vo.getStreFileNm());
bis = new BufferedInputStream(fis,size);
//zip에 넣을 다음 entry 를 가져온다.
zos.putArchiveEntry(new ZipArchiveEntry(vo.getOrignlFileNm()));
//준비된 버퍼에서 집출력스트림으로 write 한다.
int len;
while((len = bis.read(buf,0,size)) != -1) zos.write(buf,0,len);
bis.close();
fis.close();
zos.closeArchiveEntry();
}
zos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
if( zos != null ) zos.close();
if( fis != null ) fis.close();
if( bis != null ) bis.close();
}
File uFile = new File(fvoList.get(0).getFileStreCours(), orgnZipNm);
long fSize = uFile.length();
if (fSize > 0) {
String mimetype = "application/x-msdownload";
response.setContentType(mimetype);
setDisposition(orgnZipNm, request, response);
//response.setContentLength(fSize);
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (out != null) {
try {
out.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
//파일 다운로드 후 파일 삭제
File delFile = new File(outZipNm);
delFile.delete();
} else {
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br>" + orgnZipNm + "</h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
}
/* 파일 다운로드 - 일괄 zip 압축(국정원실태평가 - 세부 평가지표 및 결과[파일디테일이 없어서 따로 만듬])*/
@RequestMapping(value = "/cmm/fms/evalFileDownZip2.do")
public void evalFileDownZip2(@RequestParam Map<String, Object> commandMap
, @ModelAttribute("auditVO") AuditVO auditVO,
@ModelAttribute("auditItemVO") AuditItemVO auditItemVO
, EduVO eduVO,
HttpServletRequest request, HttpServletResponse response) throws Exception {
//파일ID를 리스트에 담기
List<String> atchFileIdList = new ArrayList<String>();
//split을 이용해 아이디를 각자 배열에 담기
String[] splitStr =auditItemVO.getAtchFileIdDown().split(",");
//리스트에 아이디 담기
for(int i=0; i<splitStr.length; i++) {
atchFileIdList.add(splitStr[i]);
}
//zip파일 이름 (메뉴명+글 제목명 +날짜)
String menuNm = "";
if(auditVO.getAutCd().equals("21 ")) {
menuNm = "개인정보실태평가";
}else if(auditVO.getAutCd().equals("03")) {
menuNm = "국정원실태평가";
}else if(auditVO.getAutCd().equals("01")) {
menuNm = "외부감사";
}else if(eduVO.getAutCd().equals("02")) {
if(eduVO.getAutConFlag().equals("01")) {
menuNm = "교육계획";
}else if(eduVO.getAutConFlag().equals("02")) {
menuNm = "회의계획";
}else if(eduVO.getAutConFlag().equals("03")) {
menuNm = "연간교육계획";
}
}
String orgnZipNm = menuNm+"_"+auditVO.getAutSj()+"_"+auditVO.getFrstRegistPnttm().substring(0,10)+".zip"; // 압축 파일명 필요..
FileVO fileVO = new FileVO();
fileVO.setAtchFileIdList(atchFileIdList);
List<FileVO> fvoList = fileService.selectNisEvalFileInfs(fileVO); // 해당 기능에 맞게 파일 조회
if(fvoList.size() == 0){
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br></h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
return ;
}
// buffer size
int size = 1024;
byte[] buf = new byte[size];
String outZipNm = fvoList.get(0).getFileStreCours()+File.separator + orgnZipNm;
FileInputStream fis = null;
ZipArchiveOutputStream zos = null;
BufferedInputStream bis = null;
try {
// Zip 파일생성
zos = new ZipArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(outZipNm)));
for ( FileVO vo : fvoList ){
zos.setEncoding("UTF-8");
//buffer에 해당파일의 stream을 입력한다.
fis = new FileInputStream(vo.getFileStreCours() + "/" + vo.getStreFileNm());
bis = new BufferedInputStream(fis,size);
//zip에 넣을 다음 entry 를 가져온다.
zos.putArchiveEntry(new ZipArchiveEntry(vo.getOrignlFileNm()));
//준비된 버퍼에서 집출력스트림으로 write 한다.
int len;
while((len = bis.read(buf,0,size)) != -1) zos.write(buf,0,len);
bis.close();
fis.close();
zos.closeArchiveEntry();
}
zos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
if( zos != null ) zos.close();
if( fis != null ) fis.close();
if( bis != null ) bis.close();
}
File uFile = new File(fvoList.get(0).getFileStreCours(), orgnZipNm);
long fSize = uFile.length();
if (fSize > 0) {
String mimetype = "application/x-msdownload";
response.setContentType(mimetype);
setDisposition(orgnZipNm, request, response);
//response.setContentLength(fSize);
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (out != null) {
try {
out.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
//파일 다운로드 후 파일 삭제
File delFile = new File(outZipNm);
delFile.delete();
} else {
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br>" + orgnZipNm + "</h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
}
/* 파일 다운로드 - 일괄 zip 압축(SLA관리)*/
@RequestMapping(value = "/cmm/fms/slaFileDownZip.do")
public void slaFileDownZip(@RequestParam Map<String, Object> commandMap, @ModelAttribute("slaAutscitecVO") SlaAutscitecVO slaAutscitecVO,
@ModelAttribute("slaAutItemVO") SlaAutItemVO slaAutItemVO,
HttpServletRequest request, HttpServletResponse response) throws Exception {
//파일ID를 리스트에 담기
List<String> atchFileIdList = new ArrayList<String>();
//split을 이용해 아이디를 각자 배열에 담기
String[] splitStr =slaAutItemVO.getAtchFileId().split(",");
//리스트에 아이디 담기
for(int i=0; i<splitStr.length; i++) {
atchFileIdList.add(splitStr[i]);
}
//zip파일 이름 (메뉴명+글 제목명 +날짜)
String menuNm = "SLA관리";
String orgnZipNm = menuNm+"_"+slaAutscitecVO.getSlaSj()+"_"+slaAutscitecVO.getFrstRegistPnttm().substring(0,10)+".zip"; // 압축 파일명 필요..
FileVO fileVO = new FileVO();
fileVO.setAtchFileIdList(atchFileIdList);
List<FileVO> fvoList = fileService.selectSLAFileInfs(fileVO); // 해당 기능에 맞게 파일 조회
if(fvoList.size() == 0){
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br></h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
return ;
}
// buffer size
int size = 1024;
byte[] buf = new byte[size];
String outZipNm = fvoList.get(0).getFileStreCours()+File.separator + orgnZipNm;
FileInputStream fis = null;
ZipArchiveOutputStream zos = null;
BufferedInputStream bis = null;
try {
// Zip 파일생성
zos = new ZipArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(outZipNm)));
for ( FileVO vo : fvoList ){
zos.setEncoding("UTF-8");
//buffer에 해당파일의 stream을 입력한다.
fis = new FileInputStream(vo.getFileStreCours() + "/" + vo.getStreFileNm());
bis = new BufferedInputStream(fis,size);
//zip에 넣을 다음 entry 를 가져온다.
zos.putArchiveEntry(new ZipArchiveEntry(vo.getOrignlFileNm()));
//준비된 버퍼에서 집출력스트림으로 write 한다.
int len;
while((len = bis.read(buf,0,size)) != -1) zos.write(buf,0,len);
bis.close();
fis.close();
zos.closeArchiveEntry();
}
zos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
if( zos != null ) zos.close();
if( fis != null ) fis.close();
if( bis != null ) bis.close();
}
File uFile = new File(fvoList.get(0).getFileStreCours(), orgnZipNm);
long fSize = uFile.length();
if (fSize > 0) {
String mimetype = "application/x-msdownload";
response.setContentType(mimetype);
setDisposition(orgnZipNm, request, response);
//response.setContentLength(fSize);
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (out != null) {
try {
out.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
//파일 다운로드 후 파일 삭제
File delFile = new File(outZipNm);
delFile.delete();
} else {
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br>" + orgnZipNm + "</h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
}
/* 파일 다운로드 - 일괄 zip 압축(정기점검)*/
@RequestMapping(value = "/cmm/fms/perFileDownZip.do")
public void perFileDownZip(@RequestParam Map<String, Object> commandMap, PeriFile periFileVO,
PeritemVO peritemVO, PerispVO perispVO,
HttpServletRequest request, HttpServletResponse response) throws Exception {
//파일ID를 리스트에 담기
List<String> atchFileIdList = new ArrayList<String>();
//split을 이용해 아이디를 각자 배열에 담기
String[] splitStr =periFileVO.getAtchFileId().split(",");
//리스트에 아이디 담기
for(int i=0; i<splitStr.length; i++) {
atchFileIdList.add(splitStr[i]);
}
//zip파일 이름 (메뉴명+글 제목명 +날짜)
String menuNm = "정기점검";
String orgnZipNm = menuNm+"_"+perispVO.getPeriSj()+"_"+perispVO.getFrstRegistPnttm().substring(0,10)+".zip"; // 압축 파일명 필요..
FileVO fileVO = new FileVO();
fileVO.setAtchFileIdList(atchFileIdList);
List<FileVO> fvoList = fileService.selectPerFileInfs(fileVO); // 해당 기능에 맞게 파일 조회
if(fvoList.size() == 0){
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br></h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
return ;
}
// buffer size
int size = 1024;
byte[] buf = new byte[size];
String outZipNm = fvoList.get(0).getFileStreCours()+File.separator + orgnZipNm;
FileInputStream fis = null;
ZipArchiveOutputStream zos = null;
BufferedInputStream bis = null;
try {
// Zip 파일생성
zos = new ZipArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(outZipNm)));
for ( FileVO vo : fvoList ){
zos.setEncoding("UTF-8");
//buffer에 해당파일의 stream을 입력한다.
fis = new FileInputStream(vo.getFileStreCours() + "/" + vo.getStreFileNm());
bis = new BufferedInputStream(fis,size);
//zip에 넣을 다음 entry 를 가져온다.
zos.putArchiveEntry(new ZipArchiveEntry(vo.getOrignlFileNm()));
//준비된 버퍼에서 집출력스트림으로 write 한다.
int len;
while((len = bis.read(buf,0,size)) != -1) zos.write(buf,0,len);
bis.close();
fis.close();
zos.closeArchiveEntry();
}
zos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
if( zos != null ) zos.close();
if( fis != null ) fis.close();
if( bis != null ) bis.close();
}
File uFile = new File(fvoList.get(0).getFileStreCours(), orgnZipNm);
long fSize = uFile.length();
if (fSize > 0) {
String mimetype = "application/x-msdownload";
response.setContentType(mimetype);
setDisposition(orgnZipNm, request, response);
//response.setContentLength(fSize);
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (out != null) {
try {
out.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
//파일 다운로드 후 파일 삭제
File delFile = new File(outZipNm);
delFile.delete();
} else {
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br>" + orgnZipNm + "</h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
}
/*감사 첨부파일 다운로드 */
@RequestMapping(value = "/uss/itsm/audit/SciTecAuditItemFileDown.do")
public void fileDownSciTecAuditAjax(@RequestParam Map<?, ?> commandMap,
AuditVO auditVO,
AuditItemVO auditItemVO,
@RequestParam("atchFileId") String[] atchFileId,
HttpServletRequest request, HttpServletResponse response
) throws Exception {
String fileSn = "0";
for(String id:atchFileId) {
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(id);
fileVO.setFileSn(fileSn);
FileVO fvo = fileService.selectItsmFileInf(fileVO);
if(fvo == null){
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br></h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
return ;
}else {
File uFile = new File(fvo.getFileStreCours(), fvo.getStreFileNm());
long fSize = uFile.length();
if (fSize > 0) {
String mimetype = "application/x-msdownload";
response.setContentType(mimetype);
setDisposition(fvo.getOrignlFileNm(), request, response);
//response.setContentLength(fSize);
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (out != null) {
try {
out.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
} else {
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br>" + fvo.getOrignlFileNm() + "</h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
}
}
}
/*첨부파일 다운로드 */
@RequestMapping(value = "/uss/itsm/nis/NisEvalItemFileDown.do")
public void fileDownNisEvalItemAjax(@RequestParam Map<?, ?> commandMap,
AuditVO auditVO,
AuditItemVO auditItemVO,
@RequestParam("atchFileId") String[] atchFileId,
HttpServletRequest request, HttpServletResponse response ) throws Exception {
String fileSn = "0";
for(String id:atchFileId) {
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(id);
fileVO.setFileSn(fileSn);
FileVO fvo = fileService.selectNisEvalItemFileInfo(fileVO);
if(fvo == null){
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br></h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
return ;
}else {
File uFile = new File(fvo.getFileStreCours(), fvo.getStreFileNm());
long fSize = uFile.length();
if (fSize > 0) {
String mimetype = "application/x-msdownload";
response.setContentType(mimetype);
setDisposition(fvo.getOrignlFileNm(), request, response);
//response.setContentLength(fSize);
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (out != null) {
try {
out.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
} else {
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br>" + fvo.getOrignlFileNm() + "</h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
}
}
}
/* 파일 다운로드 - 일괄 zip 압축(IP관리 등)*/
@RequestMapping(value = "/cmm/fms/fileDownZip.do")
public void fileDownZip(@RequestParam Map<String, Object> commandMap,
PeriFile periFileVO, IpVO ipVO , AssetVO assetVO ,
HttpServletRequest request, HttpServletResponse response) throws Exception {
//파일ID를 리스트에 담기
List<String> atchFileIdList = new ArrayList<String>();
String menuNm = "IP관리";
String orgnZipNm = "IP관리.zip";
List<FileVO> fvoList = new ArrayList<>();
if(null != commandMap.get("dbType")){
if("ipFile".equals((String) commandMap.get("dbType"))) { //IP관리 페이지
for(String IpId : ipVO.getIpIds()) {
atchFileIdList.add(IpId);
}
FileVO fileVO = new FileVO();
fileVO.setAtchFileIdList(atchFileIdList);
fvoList = fileService.selectIpFileList(fileVO);
menuNm = "IP관리" ;
orgnZipNm = "IP관리.zip";
}else if("assetFile".equals((String) commandMap.get("dbType"))) { //IP관리 페이지
for(String astId : assetVO.getAstIds()) {
atchFileIdList.add(astId);
}
FileVO fileVO = new FileVO();
fileVO.setAtchFileIdList(atchFileIdList);
fvoList = fileService.selectAssertFileList(fileVO);
menuNm = "자산관리" ;
orgnZipNm = "자산관리.zip";
}
}else {
//fvoList = fileService.selectItsmperFileInf(fileVO);
}
if(fvoList.size() == 0){
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br></h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
return ;
}
// buffer size
int size = 1024;
byte[] buf = new byte[size];
String outZipNm = fvoList.get(0).getFileStreCours()+File.separator + orgnZipNm;
FileInputStream fis = null;
ZipArchiveOutputStream zos = null;
BufferedInputStream bis = null;
try {
// Zip 파일생성
zos = new ZipArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(outZipNm)));
for ( FileVO vo : fvoList ){
zos.setEncoding("UTF-8");
//buffer에 해당파일의 stream을 입력한다.
fis = new FileInputStream(vo.getFileStreCours() + "/" + vo.getStreFileNm());
bis = new BufferedInputStream(fis,size);
//zip에 넣을 다음 entry 를 가져온다.
zos.putArchiveEntry(new ZipArchiveEntry(vo.getOrignlFileNm()));
//준비된 버퍼에서 집출력스트림으로 write 한다.
int len;
while((len = bis.read(buf,0,size)) != -1) zos.write(buf,0,len);
bis.close();
fis.close();
zos.closeArchiveEntry();
}
zos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
if( zos != null ) zos.close();
if( fis != null ) fis.close();
if( bis != null ) bis.close();
}
File uFile = new File(fvoList.get(0).getFileStreCours(), orgnZipNm);
long fSize = uFile.length();
if (fSize > 0) {
String mimetype = "application/x-msdownload";
response.setContentType(mimetype);
setDisposition(orgnZipNm, request, response);
//response.setContentLength(fSize);
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (out != null) {
try {
out.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
//파일 다운로드 후 파일 삭제
File delFile = new File(outZipNm);
delFile.delete();
} else {
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br>" + orgnZipNm + "</h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
}
/* 파일 다운로드 체크(IP관리 등)*/
@RequestMapping(value = "/uss/itsm/ip/FileDownZipCheckAjax.do")
public ModelAndView fileDownZipCheckAjax(@RequestParam Map<String, Object> commandMap,
PeriFile periFileVO, IpVO ipVO , AssetVO assetVO
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//파일ID를 리스트에 담기
List<String> atchFileIdList = new ArrayList<String>();
List<FileVO> fvoList = new ArrayList<>();
if(null != commandMap.get("dbType")){
if("ipFile".equals((String) commandMap.get("dbType"))) { //IP관리 페이지
for(String IpId : ipVO.getIpIds()){
atchFileIdList.add(IpId);
}
FileVO fileVO = new FileVO();
fileVO.setAtchFileIdList(atchFileIdList);
fvoList = fileService.selectIpFileList(fileVO);
}else if("assetFile".equals((String) commandMap.get("dbType"))) { //자산관리 페이지
for(String astId : assetVO.getAstIds()){
atchFileIdList.add(astId);
}
FileVO fileVO = new FileVO();
fileVO.setAtchFileIdList(atchFileIdList);
fvoList = fileService.selectAssertFileList(fileVO);
}
}else {
modelAndView.addObject("result", "fail");
}
if(fvoList.size() != 0){
modelAndView.addObject("result", "success");
}else {
modelAndView.addObject("result", "fail");
}
return modelAndView;
}
/* 파일 이동(개인정보실태평가,국정원실태평가,외부감사)*/
@RequestMapping(value = "/cmm/fms/EvalFileMoveAjax.do")
public ModelAndView evalFileMoveAjax(@RequestParam Map<String, Object> commandMap
, @ModelAttribute("auditVO") AuditVO auditVO,
@ModelAttribute("auditItemVO") AuditItemVO auditItemVO
, EduVO eduVO,
HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//파일ID를 리스트에 담기
List<String> atchFileIdList = new ArrayList<String>();
//split을 이용해 아이디를 각자 배열에 담기
String[] splitStr =auditItemVO.getAtchFileIdDown().split(",");
//리스트에 아이디 담기
for(int i=0; i<splitStr.length; i++) {
atchFileIdList.add(splitStr[i]);
}
//zip파일 이름 (메뉴명+글 제목명 +날짜)
String menuNm = "";
if(auditVO.getAutCd().equals("21") || auditVO.getAutCd().equals("03") || auditVO.getAutCd().equals("01")) {
menuNm = "개인정보"; //21
menuNm = "국정원실태평가"; //03
menuNm = "외부감사"; //01
AuditItemVO updateAuditItemVO = new AuditItemVO();
for(String atchFileId : atchFileIdList) {
updateAuditItemVO.setAtchFileId(atchFileId);
updateAuditItemVO.setAutAttfile1dep((String)commandMap.get("upload_list"));
updateAuditItemVO.setAutAttfile2dep((String)commandMap.get("upload_list_detail"));
auditManageService.moveAutitem(updateAuditItemVO);
}
modelAndView.addObject("result", "success");
}else if(eduVO.getAutCd().equals("02")) {
if(eduVO.getAutConFlag().equals("01")) {
menuNm = "교육계획";
AuditItemVO updateAuditItemVO = new AuditItemVO();
for(String atchFileId : atchFileIdList) {
updateAuditItemVO.setAtchFileId(atchFileId);
updateAuditItemVO.setAutAttfile1dep((String)commandMap.get("upload_list"));
updateAuditItemVO.setAutAttfile2dep((String)commandMap.get("upload_list_detail"));
auditManageService.moveAutitem(updateAuditItemVO);
}
modelAndView.addObject("result", "success");
}else if(eduVO.getAutConFlag().equals("02")) {
menuNm = "회의계획";
AuditItemVO updateAuditItemVO = new AuditItemVO();
for(String atchFileId : atchFileIdList) {
updateAuditItemVO.setAtchFileId(atchFileId);
updateAuditItemVO.setAutAttfile1dep((String)commandMap.get("upload_list2"));
updateAuditItemVO.setAutAttfile2dep((String)commandMap.get("upload_list_detail"));
auditManageService.moveAutitem(updateAuditItemVO);
}
modelAndView.addObject("result", "success");
}else if(eduVO.getAutConFlag().equals("03")) {
menuNm = "연간교육계획";
}
}
return modelAndView;
}
/*감사/담당자 명함 다운로드*/
@RequestMapping(value = "/cmm/fms/itsmCompanyFileDown.do")
public void itsmCompanyFileDown(@RequestParam Map<String, Object> commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception {
String atchFileId = (String) commandMap.get("atchFileId");
String fileSn = (String) commandMap.get("fileSn");
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(atchFileId);
fileVO.setFileSn(fileSn);
FileVO fvo = fileService.selectItsmFileInf(fileVO);
if(fvo == null){
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br></h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
return ;
}
File uFile = new File(fvo.getFileStreCours(), fvo.getStreFileNm());
long fSize = uFile.length();
if (fSize > 0) {
String mimetype = "application/x-msdownload";
response.setContentType(mimetype);
setDisposition(fvo.getOrignlFileNm(), request, response);
//response.setContentLength(fSize);
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (out != null) {
try {
out.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
} else {
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br>" + fvo.getOrignlFileNm() + "</h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>© webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
}
}